2525import org .mybatis .dynamic .sql .render .TableAliasCalculator ;
2626import org .mybatis .dynamic .sql .select .render .SelectRenderer ;
2727import org .mybatis .dynamic .sql .select .render .SelectStatementProvider ;
28+ import org .mybatis .dynamic .sql .util .AbstractColumnMapping ;
2829import org .mybatis .dynamic .sql .util .ColumnToColumnMapping ;
2930import org .mybatis .dynamic .sql .util .ConstantMapping ;
3031import org .mybatis .dynamic .sql .util .FragmentAndParameters ;
@@ -71,6 +72,15 @@ public Optional<FragmentAndParameters> visit(StringConstantMapping mapping) {
7172
7273 @ Override
7374 public <T > Optional <FragmentAndParameters > visit (ValueMapping <T > mapping ) {
75+ return buildFragment (mapping , mapping .value ());
76+ }
77+
78+ @ Override
79+ public <T > Optional <FragmentAndParameters > visit (ValueWhenPresentMapping <T > mapping ) {
80+ return mapping .value ().flatMap (v -> buildFragment (mapping , v ));
81+ }
82+
83+ private <T > Optional <FragmentAndParameters > buildFragment (AbstractColumnMapping mapping , T value ) {
7484 String mapKey = RenderingStrategy .formatParameterMapKey (sequence );
7585
7686 String jdbcPlaceholder = mapping .mapColumn (toJdbcPlaceholder (mapKey ));
@@ -79,25 +89,13 @@ public <T> Optional<FragmentAndParameters> visit(ValueMapping<T> mapping) {
7989 + jdbcPlaceholder ;
8090
8191 return FragmentAndParameters .withFragment (setPhrase )
82- .withParameter (mapKey , mapping . value () )
92+ .withParameter (mapKey , value )
8393 .buildOptional ();
8494 }
85-
86- @ Override
87- public <R > Optional <FragmentAndParameters > visit (ValueWhenPresentMapping <R > mapping ) {
88- return mapping .value ().flatMap (v -> {
89- String mapKey = RenderingStrategy .formatParameterMapKey (sequence );
90-
91- String jdbcPlaceholder = mapping .mapColumn (toJdbcPlaceholder (mapKey ));
92- String setPhrase = mapping .mapColumn (SqlColumn ::name )
93- + " = " //$NON-NLS-1$
94- + jdbcPlaceholder ;
95-
96- return FragmentAndParameters .withFragment (setPhrase )
97- .withParameter (mapKey , v )
98- .buildOptional ();
99-
100- });
95+
96+ private Function <SqlColumn <?>, String > toJdbcPlaceholder (String parameterName ) {
97+ return column -> column .renderingStrategy ().orElse (renderingStrategy )
98+ .getFormattedJdbcPlaceholder (column , RenderingStrategy .DEFAULT_PARAMETER_PREFIX , parameterName );
10199 }
102100
103101 @ Override
@@ -127,9 +125,4 @@ public Optional<FragmentAndParameters> visit(ColumnToColumnMapping mapping) {
127125 return FragmentAndParameters .withFragment (setPhrase )
128126 .buildOptional ();
129127 }
130-
131- private Function <SqlColumn <?>, String > toJdbcPlaceholder (String parameterName ) {
132- return column -> column .renderingStrategy ().orElse (renderingStrategy )
133- .getFormattedJdbcPlaceholder (column , RenderingStrategy .DEFAULT_PARAMETER_PREFIX , parameterName );
134- }
135128}
0 commit comments