File tree Expand file tree Collapse file tree 7 files changed +25
-24
lines changed
src/main/java/org/mybatis/dynamic/sql Expand file tree Collapse file tree 7 files changed +25
-24
lines changed Original file line number Diff line number Diff line change 23
23
public class BatchInsertRenderer <T > {
24
24
25
25
private final BatchInsertModel <T > model ;
26
- private final RenderingStrategy renderingStrategy ;
26
+ private final MultiRowValuePhraseVisitor visitor ;
27
27
28
28
private BatchInsertRenderer (Builder <T > builder ) {
29
29
model = Objects .requireNonNull (builder .model );
30
- renderingStrategy = Objects . requireNonNull (builder .renderingStrategy );
30
+ visitor = new MultiRowValuePhraseVisitor (builder .renderingStrategy , "row" ); //$NON-NLS-1$)
31
31
}
32
32
33
33
public BatchInsert <T > render () {
34
- MultiRowValuePhraseVisitor visitor = new MultiRowValuePhraseVisitor (renderingStrategy , "row" ); //$NON-NLS-1$)
35
34
FieldAndValueCollector collector = model .columnMappings ()
36
- .map (m -> m . accept ( visitor ) )
35
+ .map (visitor :: renderMapping )
37
36
.collect (FieldAndValueCollector .collect ());
38
37
39
38
String insertStatement = InsertRenderingUtilities .calculateInsertStatement (model .table (), collector );
Original file line number Diff line number Diff line change 27
27
public class GeneralInsertRenderer {
28
28
29
29
private final GeneralInsertModel model ;
30
- private final RenderingContext renderingContext ;
30
+ private final GeneralInsertValuePhraseVisitor visitor ;
31
31
32
32
private GeneralInsertRenderer (Builder builder ) {
33
33
model = Objects .requireNonNull (builder .model );
34
- renderingContext = RenderingContext .withRenderingStrategy (builder .renderingStrategy )
34
+ RenderingContext renderingContext = RenderingContext .withRenderingStrategy (builder .renderingStrategy )
35
35
.withStatementConfiguration (builder .statementConfiguration )
36
36
.build ();
37
+ visitor = new GeneralInsertValuePhraseVisitor (renderingContext );
37
38
}
38
39
39
40
public GeneralInsertStatementProvider render () {
40
- GeneralInsertValuePhraseVisitor visitor = new GeneralInsertValuePhraseVisitor (renderingContext );
41
41
FieldAndValueCollector collector = model .columnMappings ()
42
- .map (m -> m . accept ( visitor ) )
42
+ .map (visitor :: renderMapping )
43
43
.filter (Optional ::isPresent )
44
44
.map (Optional ::get )
45
45
.collect (FieldAndValueCollector .collect ());
Original file line number Diff line number Diff line change 25
25
public class InsertRenderer <T > {
26
26
27
27
private final InsertModel <T > model ;
28
- private final RenderingStrategy renderingStrategy ;
28
+ private final ValuePhraseVisitor visitor ;
29
29
30
30
private InsertRenderer (Builder <T > builder ) {
31
31
model = Objects .requireNonNull (builder .model );
32
- renderingStrategy = Objects . requireNonNull (builder .renderingStrategy );
32
+ visitor = new ValuePhraseVisitor (builder .renderingStrategy );
33
33
}
34
34
35
35
public InsertStatementProvider <T > render () {
36
- ValuePhraseVisitor visitor = new ValuePhraseVisitor (renderingStrategy );
37
-
38
36
FieldAndValueCollector collector = model .columnMappings ()
39
- .map (m -> m . accept ( visitor ) )
37
+ .map (visitor :: renderMapping )
40
38
.filter (Optional ::isPresent )
41
39
.map (Optional ::get )
42
40
.collect (FieldAndValueCollector .collect ());
Original file line number Diff line number Diff line change 25
25
public class MultiRowInsertRenderer <T > {
26
26
27
27
private final MultiRowInsertModel <T > model ;
28
- private final RenderingStrategy renderingStrategy ;
28
+ private final MultiRowValuePhraseVisitor visitor ;
29
29
30
30
private MultiRowInsertRenderer (Builder <T > builder ) {
31
31
model = Objects .requireNonNull (builder .model );
32
- renderingStrategy = Objects .requireNonNull (builder .renderingStrategy );
32
+ // the prefix is a generic format that will be resolved below with String.format(...)
33
+ visitor = new MultiRowValuePhraseVisitor (builder .renderingStrategy , "records[%s]" ); //$NON-NLS-1$
33
34
}
34
35
35
36
public MultiRowInsertStatementProvider <T > render () {
36
- // the prefix is a generic format that will be resolved below with String.format(...)
37
- MultiRowValuePhraseVisitor visitor =
38
- new MultiRowValuePhraseVisitor (renderingStrategy , "records[%s]" ); //$NON-NLS-1$
39
37
FieldAndValueCollector collector = model .columnMappings ()
40
- .map (m -> m . accept ( visitor ) )
38
+ .map (visitor :: renderMapping )
41
39
.collect (FieldAndValueCollector .collect ());
42
40
43
41
String insertStatement = calculateInsertStatement (collector );
Original file line number Diff line number Diff line change 25
25
import org .mybatis .dynamic .sql .util .StringConstantMapping ;
26
26
import org .mybatis .dynamic .sql .util .StringUtilities ;
27
27
28
+ import java .util .Objects ;
29
+
28
30
public class MultiRowValuePhraseVisitor extends MultiRowInsertMappingVisitor <FieldAndValueAndParameters > {
29
31
protected final RenderingStrategy renderingStrategy ;
30
32
protected final String prefix ;
31
33
32
34
protected MultiRowValuePhraseVisitor (RenderingStrategy renderingStrategy , String prefix ) {
33
- this .renderingStrategy = renderingStrategy ;
34
- this .prefix = prefix ;
35
+ this .renderingStrategy = Objects . requireNonNull ( renderingStrategy ) ;
36
+ this .prefix = Objects . requireNonNull ( prefix ) ;
35
37
}
36
38
37
39
@ Override
Original file line number Diff line number Diff line change 37
37
public class UpdateRenderer {
38
38
private final UpdateModel updateModel ;
39
39
private final RenderingContext renderingContext ;
40
+ private final SetPhraseVisitor visitor ;
40
41
41
42
private UpdateRenderer (Builder builder ) {
42
43
updateModel = Objects .requireNonNull (builder .updateModel );
@@ -48,6 +49,7 @@ private UpdateRenderer(Builder builder) {
48
49
.withTableAliasCalculator (tableAliasCalculator )
49
50
.withStatementConfiguration (builder .statementConfiguration )
50
51
.build ();
52
+ visitor = new SetPhraseVisitor (renderingContext );
51
53
}
52
54
53
55
public UpdateStatementProvider render () {
@@ -75,10 +77,8 @@ private FragmentAndParameters calculateUpdateStatementStart() {
75
77
}
76
78
77
79
private FragmentAndParameters calculateSetPhrase () {
78
- SetPhraseVisitor visitor = new SetPhraseVisitor (renderingContext );
79
-
80
80
List <Optional <FragmentAndParameters >> fragmentsAndParameters = updateModel .columnMappings ()
81
- .map (m -> m . accept ( visitor ) )
81
+ .map (visitor :: renderMapping )
82
82
.collect (Collectors .toList ());
83
83
84
84
Validator .assertFalse (fragmentsAndParameters .stream ().noneMatch (Optional ::isPresent ),
Original file line number Diff line number Diff line change 31
31
* The type of object created by the visitor
32
32
*/
33
33
public interface ColumnMappingVisitor <R > {
34
+ default R renderMapping (AbstractColumnMapping mapping ) {
35
+ return mapping .accept (this );
36
+ }
37
+
34
38
R visit (NullMapping mapping );
35
39
36
40
R visit (ConstantMapping mapping );
You can’t perform that action at this time.
0 commit comments