Skip to content

Commit c4a9b91

Browse files
committed
Updates after merge
1 parent 8185164 commit c4a9b91

14 files changed

+88
-146
lines changed

src/main/java/org/mybatis/dynamic/sql/insert/render/AbstractMultiRowValuePhraseVisitor.java

Lines changed: 0 additions & 79 deletions
This file was deleted.

src/main/java/org/mybatis/dynamic/sql/insert/render/BatchInsertRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ private BatchInsertRenderer(Builder<T> builder) {
3131
}
3232

3333
public BatchInsert<T> render() {
34-
BatchValuePhraseVisitor visitor = new BatchValuePhraseVisitor(renderingStrategy, "row"); //$NON-NLS-1$)
34+
MultiRowValuePhraseVisitor visitor = new MultiRowValuePhraseVisitor(renderingStrategy, "row"); //$NON-NLS-1$)
3535
FieldAndValueCollector collector = model.mapColumnMappings(m -> m.accept(visitor))
3636
.collect(FieldAndValueCollector.collect());
3737

src/main/java/org/mybatis/dynamic/sql/insert/render/BatchValuePhraseVisitor.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/main/java/org/mybatis/dynamic/sql/insert/render/MultiRowValuePhraseVisitor.java

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,63 @@
1717

1818
import org.mybatis.dynamic.sql.SqlColumn;
1919
import org.mybatis.dynamic.sql.render.RenderingStrategy;
20+
import org.mybatis.dynamic.sql.util.ConstantMapping;
21+
import org.mybatis.dynamic.sql.util.MultiRowInsertMappingVisitor;
22+
import org.mybatis.dynamic.sql.util.NullMapping;
23+
import org.mybatis.dynamic.sql.util.PropertyMapping;
24+
import org.mybatis.dynamic.sql.util.RowMapping;
25+
import org.mybatis.dynamic.sql.util.StringConstantMapping;
2026

21-
public class MultiRowValuePhraseVisitor extends AbstractMultiRowValuePhraseVisitor {
27+
public class MultiRowValuePhraseVisitor extends MultiRowInsertMappingVisitor<FieldAndValueAndParameters> {
28+
protected final RenderingStrategy renderingStrategy;
29+
protected final String prefix;
2230

23-
public MultiRowValuePhraseVisitor(RenderingStrategy renderingStrategy, String prefix) {
24-
super(renderingStrategy, prefix);
31+
protected MultiRowValuePhraseVisitor(RenderingStrategy renderingStrategy, String prefix) {
32+
this.renderingStrategy = renderingStrategy;
33+
this.prefix = prefix;
2534
}
2635

2736
@Override
28-
String calculateJdbcPlaceholder(SqlColumn<?> column) {
29-
return column.renderingStrategy().orElse(renderingStrategy).getMultiRowFormattedJdbcPlaceholder(column, prefix);
37+
public FieldAndValueAndParameters visit(NullMapping mapping) {
38+
return FieldAndValueAndParameters.withFieldName(mapping.columnName())
39+
.withValuePhrase("null") //$NON-NLS-1$
40+
.build();
41+
}
42+
43+
@Override
44+
public FieldAndValueAndParameters visit(ConstantMapping mapping) {
45+
return FieldAndValueAndParameters.withFieldName(mapping.columnName())
46+
.withValuePhrase(mapping.constant())
47+
.build();
48+
}
49+
50+
@Override
51+
public FieldAndValueAndParameters visit(StringConstantMapping mapping) {
52+
return FieldAndValueAndParameters.withFieldName(mapping.columnName())
53+
.withValuePhrase("'" + mapping.constant() + "'") //$NON-NLS-1$ //$NON-NLS-2$
54+
.build();
55+
}
56+
57+
@Override
58+
public FieldAndValueAndParameters visit(PropertyMapping mapping) {
59+
return FieldAndValueAndParameters.withFieldName(mapping.columnName())
60+
.withValuePhrase(mapping.mapColumn(c -> calculateJdbcPlaceholder(c, mapping.property())))
61+
.build();
62+
}
63+
64+
@Override
65+
public FieldAndValueAndParameters visit(RowMapping mapping) {
66+
return FieldAndValueAndParameters.withFieldName(mapping.columnName())
67+
.withValuePhrase(mapping.mapColumn(this::calculateJdbcPlaceholder))
68+
.build();
69+
}
70+
71+
private String calculateJdbcPlaceholder(SqlColumn<?> column) {
72+
return column.renderingStrategy().orElse(renderingStrategy).getRecordBasedInsertBinding(column, prefix);
73+
}
74+
75+
private String calculateJdbcPlaceholder(SqlColumn<?> column, String parameterName) {
76+
return column.renderingStrategy().orElse(renderingStrategy)
77+
.getRecordBasedInsertBinding(column, prefix, parameterName);
3078
}
3179
}

src/main/java/org/mybatis/dynamic/sql/insert/render/ValuePhraseVisitor.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.mybatis.dynamic.sql.render.RenderingStrategy;
2222
import org.mybatis.dynamic.sql.util.ConstantMapping;
2323
import org.mybatis.dynamic.sql.util.InsertMappingVisitor;
24-
import org.mybatis.dynamic.sql.util.Messages;
2524
import org.mybatis.dynamic.sql.util.NullMapping;
2625
import org.mybatis.dynamic.sql.util.PropertyMapping;
2726
import org.mybatis.dynamic.sql.util.PropertyWhenPresentMapping;
@@ -73,6 +72,18 @@ public Optional<FieldAndValueAndParameters> visit(PropertyWhenPresentMapping map
7372
}
7473
}
7574

75+
@Override
76+
public Optional<FieldAndValueAndParameters> visit(RowMapping mapping) {
77+
return FieldAndValueAndParameters.withFieldName(mapping.columnName())
78+
.withValuePhrase(mapping.mapColumn(this::calculateJdbcPlaceholder))
79+
.buildOptional();
80+
}
81+
82+
private String calculateJdbcPlaceholder(SqlColumn<?> column) {
83+
return column.renderingStrategy().orElse(renderingStrategy)
84+
.getRecordBasedInsertBinding(column, "row"); //$NON-NLS-1$
85+
}
86+
7687
private String calculateJdbcPlaceholder(SqlColumn<?> column, String parameterName) {
7788
return column.renderingStrategy().orElse(renderingStrategy)
7889
.getRecordBasedInsertBinding(column, "row", parameterName); //$NON-NLS-1$

src/main/java/org/mybatis/dynamic/sql/render/MyBatis3RenderingStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public String getFormattedJdbcPlaceholder(BindableColumn<?> column, String prefi
4040
}
4141

4242
@Override
43-
public String getFormattedJdbcPlaceholder(BindableColumn<?> column, String parameterName) {
43+
public String getRecordBasedInsertBinding(BindableColumn<?> column, String parameterName) {
4444
return "#{" //$NON-NLS-1$
4545
+ parameterName
4646
+ renderJdbcType(column)

src/main/java/org/mybatis/dynamic/sql/render/RenderingStrategy.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,14 @@ public String formatParameterMapKey(AtomicInteger sequence) {
9292
*
9393
* @param column column definition used for generating type details in a MyBatis binding. Ignored for Spring.
9494
* @param prefix parameter prefix used for locating the parameters in a SQL provider object. Typically, will be
95-
* {@link RenderingStrategy#DEFAULT_PARAMETER_PREFIX}. This is ignored for Spring.
96-
* @param parameterName name of the parameter. Typically generated by calling
97-
* {@link RenderingStrategy#formatParameterMapKey(AtomicInteger)}
95+
* either "row" or "records[x]" to match the properties of the generated statement object class.
96+
* @param parameterName name of the parameter. Typically, this is a property in the row class associated with the
97+
* insert statement.
9898
* @return the generated binding
9999
*/
100100
public String getRecordBasedInsertBinding(BindableColumn<?> column, String prefix, String parameterName) {
101101
return getFormattedJdbcPlaceholder(column, prefix, parameterName);
102102
}
103103

104-
public String getMultiRowFormattedJdbcPlaceholder(BindableColumn<?> column, String parameterName) {
105-
return getFormattedJdbcPlaceholder(column, parameterName);
106-
}
104+
public abstract String getRecordBasedInsertBinding(BindableColumn<?> column, String parameterName);
107105
}

src/main/java/org/mybatis/dynamic/sql/render/SpringNamedParameterRenderingStrategy.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ public String getFormattedJdbcPlaceholder(BindableColumn<?> column, String prefi
2424
return getFormattedJdbcPlaceholder(prefix, parameterName);
2525
}
2626

27-
@Override
28-
public String getFormattedJdbcPlaceholder(BindableColumn<?> column, String parameterName) {
29-
return ":" + parameterName; //$NON-NLS-1$
30-
}
31-
3227
@Override
3328
public String getFormattedJdbcPlaceholder(String prefix, String parameterName) {
3429
return ":" + parameterName; //$NON-NLS-1$
@@ -40,7 +35,7 @@ public String getRecordBasedInsertBinding(BindableColumn<?> column, String prefi
4035
}
4136

4237
@Override
43-
public String getMultiRowFormattedJdbcPlaceholder(BindableColumn<?> column, String parameterName) {
38+
public String getRecordBasedInsertBinding(BindableColumn<?> column, String parameterName) {
4439
return ":" + parameterName; //$NON-NLS-1$
4540
}
4641
}

src/main/java/org/mybatis/dynamic/sql/util/GeneralInsertMappingVisitor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ public final R visit(ColumnToColumnMapping columnMapping) {
3838

3939
@Override
4040
public final R visit(RowMapping mapping) {
41-
// TODO - fix error number
42-
throw new UnsupportedOperationException(Messages.getInternalErrorString(99));
41+
throw new UnsupportedOperationException(Messages.getInternalErrorString(InternalError.INTERNAL_ERROR_14));
4342
}
4443
}

src/main/java/org/mybatis/dynamic/sql/util/InsertMappingVisitor.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@
1515
*/
1616
package org.mybatis.dynamic.sql.util;
1717

18-
import org.mybatis.dynamic.sql.insert.render.FieldAndValueAndParameters;
19-
20-
import java.util.Optional;
21-
2218
public abstract class InsertMappingVisitor<R> implements ColumnMappingVisitor<R> {
2319
@Override
2420
public final <T> R visit(ValueMapping<T> mapping) {
@@ -44,10 +40,4 @@ public final R visit(SelectMapping mapping) {
4440
public final R visit(ColumnToColumnMapping columnMapping) {
4541
throw new UnsupportedOperationException(Messages.getInternalErrorString(InternalError.INTERNAL_ERROR_9));
4642
}
47-
48-
@Override
49-
public R visit(RowMapping mapping) {
50-
// TODO - fix error number
51-
throw new UnsupportedOperationException(Messages.getInternalErrorString(99));
52-
}
5343
}

0 commit comments

Comments
 (0)