Skip to content

Commit 5dc34dd

Browse files
committed
Add a new visitor so we don't need to pass a weird string value
1 parent 489f7a4 commit 5dc34dd

File tree

5 files changed

+47
-8
lines changed

5 files changed

+47
-8
lines changed

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
@@ -33,7 +33,7 @@ private BatchInsertRenderer(Builder<T> builder) {
3333
}
3434

3535
public BatchInsert<T> render() {
36-
ValuePhraseVisitor visitor = new ValuePhraseVisitor(renderingStrategy, "record"); //$NON-NLS-1$
36+
ValuePhraseVisitor visitor = new ValuePhraseVisitor(renderingStrategy);
3737
FieldAndValueCollector collector = model.mapColumnMappings(MultiRowRenderingUtilities.toFieldAndValue(visitor))
3838
.collect(FieldAndValueCollector.collect());
3939

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ private InsertRenderer(Builder<T> builder) {
3535
}
3636

3737
public InsertStatementProvider<T> render() {
38-
ValuePhraseVisitor visitor = new ValuePhraseVisitor(renderingStrategy, "record"); //$NON-NLS-1$
38+
ValuePhraseVisitor visitor = new ValuePhraseVisitor(renderingStrategy);
3939
FieldAndValueCollector collector = model.mapColumnMappings(toFieldAndValue(visitor))
4040
.collect(FieldAndValueCollector.collect());
4141

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ private MultiRowInsertRenderer(Builder<T> builder) {
3333
}
3434

3535
public MultiRowInsertStatementProvider<T> render() {
36-
ValuePhraseVisitor visitor = new ValuePhraseVisitor(renderingStrategy, "records[%s]"); //$NON-NLS-1$
36+
ValuePhraseVisitor visitor = new MultiRowValuePhraseVisitor(renderingStrategy);
3737
FieldAndValueCollector collector = model.mapColumnMappings(MultiRowRenderingUtilities.toFieldAndValue(visitor))
3838
.collect(FieldAndValueCollector.collect());
3939

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* Copyright 2016-2019 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.mybatis.dynamic.sql.insert.render;
17+
18+
import java.util.function.Function;
19+
20+
import org.mybatis.dynamic.sql.SqlColumn;
21+
import org.mybatis.dynamic.sql.render.RenderingStrategy;
22+
import org.mybatis.dynamic.sql.util.PropertyMapping;
23+
24+
public class MultiRowValuePhraseVisitor extends ValuePhraseVisitor {
25+
26+
public MultiRowValuePhraseVisitor(RenderingStrategy renderingStrategy) {
27+
super(renderingStrategy);
28+
}
29+
30+
@Override
31+
public FieldAndValue visit(PropertyMapping mapping) {
32+
return FieldAndValue.withFieldName(mapping.mapColumn(SqlColumn::name))
33+
.withValuePhrase(mapping.mapColumn(toMultiRowJdbcPlaceholder(mapping.property())))
34+
.build();
35+
}
36+
37+
private Function<SqlColumn<?>, String> toMultiRowJdbcPlaceholder(String parameterName) {
38+
return column -> renderingStrategy.getFormattedJdbcPlaceholder(column, "records[%s]", //$NON-NLS-1$
39+
parameterName);
40+
}
41+
}

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,10 @@
2727

2828
public class ValuePhraseVisitor implements InsertMappingVisitor<FieldAndValue> {
2929

30-
private RenderingStrategy renderingStrategy;
31-
private String prefix;
30+
protected RenderingStrategy renderingStrategy;
3231

33-
public ValuePhraseVisitor(RenderingStrategy renderingStrategy, String prefix) {
32+
public ValuePhraseVisitor(RenderingStrategy renderingStrategy) {
3433
this.renderingStrategy = renderingStrategy;
35-
this.prefix = prefix;
3634
}
3735

3836
@Override
@@ -64,6 +62,6 @@ public FieldAndValue visit(PropertyMapping mapping) {
6462
}
6563

6664
private Function<SqlColumn<?>, String> toJdbcPlaceholder(String parameterName) {
67-
return column -> renderingStrategy.getFormattedJdbcPlaceholder(column, prefix, parameterName);
65+
return column -> renderingStrategy.getFormattedJdbcPlaceholder(column, "record", parameterName); //$NON-NLS-1$
6866
}
6967
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy