Skip to content

Commit cc6542c

Browse files
committed
Use consistent parameter names
With the change for #142 it no longer makes sense to have specialized parameter names for limit, offset, etc.
1 parent 71ec070 commit cc6542c

File tree

17 files changed

+275
-284
lines changed

17 files changed

+275
-284
lines changed

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

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

18+
import java.util.concurrent.atomic.AtomicInteger;
19+
1820
import org.mybatis.dynamic.sql.BindableColumn;
1921

2022
public abstract class RenderingStrategy {
@@ -38,6 +40,10 @@ public abstract class RenderingStrategy {
3840

3941
public static final String DEFAULT_PARAMETER_PREFIX = "parameters"; //$NON-NLS-1$
4042

43+
public static String formatParameterMapKey(AtomicInteger sequence) {
44+
return "p" + sequence.getAndIncrement(); //$NON-NLS-1$
45+
}
46+
4147
public abstract String getFormattedJdbcPlaceholder(BindableColumn<?> column, String prefix, String parameterName);
4248

4349
public abstract String getFormattedJdbcPlaceholder(String prefix, String parameterName);

src/main/java/org/mybatis/dynamic/sql/select/render/FetchFirstPagingModelRenderer.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
import org.mybatis.dynamic.sql.util.FragmentAndParameters;
2424

2525
public class FetchFirstPagingModelRenderer {
26-
private static final String FETCH_FIRST_ROWS_PARAMETER = "_fetchFirstRows"; //$NON-NLS-1$
27-
private static final String OFFSET_PARAMETER = "_offset"; //$NON-NLS-1$
2826
private RenderingStrategy renderingStrategy;
2927
private PagingModel pagingModel;
3028
private AtomicInteger sequence;
@@ -53,7 +51,7 @@ private Optional<FragmentAndParameters> renderFetchFirstRowsOnly() {
5351
}
5452

5553
private Optional<FragmentAndParameters> renderFetchFirstRowsOnly(Long fetchFirstRows) {
56-
String mapKey = formatParameterMapKey(FETCH_FIRST_ROWS_PARAMETER);
54+
String mapKey = RenderingStrategy.formatParameterMapKey(sequence);
5755
return FragmentAndParameters
5856
.withFragment("fetch first " + renderPlaceholder(mapKey) //$NON-NLS-1$
5957
+ " rows only") //$NON-NLS-1$
@@ -62,16 +60,16 @@ private Optional<FragmentAndParameters> renderFetchFirstRowsOnly(Long fetchFirst
6260
}
6361

6462
private Optional<FragmentAndParameters> renderOffsetOnly(Long offset) {
65-
String mapKey = formatParameterMapKey(OFFSET_PARAMETER);
63+
String mapKey = RenderingStrategy.formatParameterMapKey(sequence);
6664
return FragmentAndParameters.withFragment("offset " + renderPlaceholder(mapKey) //$NON-NLS-1$
6765
+ " rows") //$NON-NLS-1$
6866
.withParameter(mapKey, offset)
6967
.buildOptional();
7068
}
7169

7270
private Optional<FragmentAndParameters> renderOffsetAndFetchFirstRows(Long offset, Long fetchFirstRows) {
73-
String mapKey1 = formatParameterMapKey(OFFSET_PARAMETER);
74-
String mapKey2 = formatParameterMapKey(FETCH_FIRST_ROWS_PARAMETER);
71+
String mapKey1 = RenderingStrategy.formatParameterMapKey(sequence);
72+
String mapKey2 = RenderingStrategy.formatParameterMapKey(sequence);
7573
return FragmentAndParameters.withFragment("offset " + renderPlaceholder(mapKey1) //$NON-NLS-1$
7674
+ " rows fetch first " + renderPlaceholder(mapKey2) //$NON-NLS-1$
7775
+ " rows only") //$NON-NLS-1$
@@ -80,10 +78,6 @@ private Optional<FragmentAndParameters> renderOffsetAndFetchFirstRows(Long offse
8078
.buildOptional();
8179
}
8280

83-
private String formatParameterMapKey(String parameterMapKey) {
84-
return parameterMapKey + sequence.getAndIncrement(); //$NON-NLS-1$
85-
}
86-
8781
private String renderPlaceholder(String parameterName) {
8882
return renderingStrategy.getFormattedJdbcPlaceholder(RenderingStrategy.DEFAULT_PARAMETER_PREFIX,
8983
parameterName);

src/main/java/org/mybatis/dynamic/sql/select/render/LimitAndOffsetPagingModelRenderer.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
import org.mybatis.dynamic.sql.util.FragmentAndParameters;
2424

2525
public class LimitAndOffsetPagingModelRenderer {
26-
private static final String LIMIT_PARAMETER = "_limit"; //$NON-NLS-1$
27-
private static final String OFFSET_PARAMETER = "_offset"; //$NON-NLS-1$
2826
private RenderingStrategy renderingStrategy;
2927
private Long limit;
3028
private PagingModel pagingModel;
@@ -44,26 +42,22 @@ public Optional<FragmentAndParameters> render() {
4442
}
4543

4644
private Optional<FragmentAndParameters> renderLimitOnly() {
47-
String mapKey = formatParameterMapKey(LIMIT_PARAMETER);
45+
String mapKey = RenderingStrategy.formatParameterMapKey(sequence);
4846
return FragmentAndParameters.withFragment("limit " + renderPlaceholder(mapKey)) //$NON-NLS-1$
4947
.withParameter(mapKey, limit)
5048
.buildOptional();
5149
}
5250

5351
private Optional<FragmentAndParameters> renderLimitAndOffset(Long offset) {
54-
String mapKey1 = formatParameterMapKey(LIMIT_PARAMETER);
55-
String mapKey2 = formatParameterMapKey(OFFSET_PARAMETER);
52+
String mapKey1 = RenderingStrategy.formatParameterMapKey(sequence);
53+
String mapKey2 = RenderingStrategy.formatParameterMapKey(sequence);
5654
return FragmentAndParameters.withFragment("limit " + renderPlaceholder(mapKey1) //$NON-NLS-1$
5755
+ " offset " + renderPlaceholder(mapKey2)) //$NON-NLS-1$
5856
.withParameter(mapKey1, limit)
5957
.withParameter(mapKey2, offset)
6058
.buildOptional();
6159
}
6260

63-
private String formatParameterMapKey(String parameterMapKey) {
64-
return parameterMapKey + sequence.getAndIncrement(); //$NON-NLS-1$
65-
}
66-
6761
private String renderPlaceholder(String parameterName) {
6862
return renderingStrategy.getFormattedJdbcPlaceholder(RenderingStrategy.DEFAULT_PARAMETER_PREFIX,
6963
parameterName);

src/main/java/org/mybatis/dynamic/sql/update/render/SetPhraseVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public FragmentAndParameters visit(StringConstantMapping mapping) {
6969

7070
@Override
7171
public <T> FragmentAndParameters visit(ValueMapping<T> mapping) {
72-
String mapKey = "p" + sequence.getAndIncrement(); //$NON-NLS-1$
72+
String mapKey = RenderingStrategy.formatParameterMapKey(sequence);
7373

7474
String jdbcPlaceholder = mapping.mapColumn(toJdbcPlaceholder(mapKey));
7575
String setPhrase = mapping.mapColumn(SqlColumn::name)

src/main/java/org/mybatis/dynamic/sql/where/render/WhereConditionVisitor.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public Optional<FragmentAndParameters> visit(AbstractNoValueCondition<T> conditi
7272

7373
@Override
7474
public Optional<FragmentAndParameters> visit(AbstractSingleValueCondition<T> condition) {
75-
String mapKey = formatParameterMapKey(sequence.getAndIncrement());
75+
String mapKey = RenderingStrategy.formatParameterMapKey(sequence);
7676
String fragment = condition.renderCondition(columnName(),
7777
getFormattedJdbcPlaceholder(mapKey));
7878

@@ -83,8 +83,8 @@ public Optional<FragmentAndParameters> visit(AbstractSingleValueCondition<T> con
8383

8484
@Override
8585
public Optional<FragmentAndParameters> visit(AbstractTwoValueCondition<T> condition) {
86-
String mapKey1 = formatParameterMapKey(sequence.getAndIncrement());
87-
String mapKey2 = formatParameterMapKey(sequence.getAndIncrement());
86+
String mapKey1 = RenderingStrategy.formatParameterMapKey(sequence);
87+
String mapKey2 = RenderingStrategy.formatParameterMapKey(sequence);
8888
String fragment = condition.renderCondition(columnName(),
8989
getFormattedJdbcPlaceholder(mapKey1),
9090
getFormattedJdbcPlaceholder(mapKey2));
@@ -118,17 +118,13 @@ public Optional<FragmentAndParameters> visit(AbstractColumnComparisonCondition<T
118118
}
119119

120120
private FragmentAndParameters toFragmentAndParameters(T value) {
121-
String mapKey = formatParameterMapKey(sequence.getAndIncrement());
122-
121+
String mapKey = RenderingStrategy.formatParameterMapKey(sequence);
122+
123123
return FragmentAndParameters.withFragment(getFormattedJdbcPlaceholder(mapKey))
124124
.withParameter(mapKey, value)
125125
.build();
126126
}
127127

128-
private String formatParameterMapKey(int number) {
129-
return "p" + number; //$NON-NLS-1$
130-
}
131-
132128
private String getFormattedJdbcPlaceholder(String mapKey) {
133129
return renderingStrategy.getFormattedJdbcPlaceholder(column, parameterPrefix, mapKey);
134130
}

src/test/java/examples/animal/data/FetchFirstTest.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ public void testOffsetAndFetchFirstAfterFrom() {
7979
assertAll(
8080
() -> assertThat(records.size()).isEqualTo(3),
8181
() -> assertThat(records.get(0).getId()).isEqualTo(23),
82-
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData offset #{parameters._offset1} rows fetch first #{parameters._fetchFirstRows2} rows only"),
83-
() -> assertThat(selectStatement.getParameters().get("_fetchFirstRows2")).isEqualTo(3L),
84-
() -> assertThat(selectStatement.getParameters().get("_offset1")).isEqualTo(22L)
82+
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData offset #{parameters.p1} rows fetch first #{parameters.p2} rows only"),
83+
() -> assertThat(selectStatement.getParameters().get("p2")).isEqualTo(3L),
84+
() -> assertThat(selectStatement.getParameters().get("p1")).isEqualTo(22L)
8585
);
8686
}
8787
}
@@ -101,8 +101,8 @@ public void testFetchFirstOnlyAfterFrom() {
101101
assertAll(
102102
() -> assertThat(records.size()).isEqualTo(3),
103103
() -> assertThat(records.get(0).getId()).isEqualTo(1),
104-
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData fetch first #{parameters._fetchFirstRows1} rows only"),
105-
() -> assertThat(selectStatement.getParameters().get("_fetchFirstRows1")).isEqualTo(3L)
104+
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData fetch first #{parameters.p1} rows only"),
105+
() -> assertThat(selectStatement.getParameters().get("p1")).isEqualTo(3L)
106106
);
107107
}
108108
}
@@ -125,9 +125,9 @@ public void testOffsetAndFetchFirstAfterWhere() {
125125
assertAll(
126126
() -> assertThat(records.size()).isEqualTo(3),
127127
() -> assertThat(records.get(0).getId()).isEqualTo(45),
128-
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData where id < #{parameters.p1,jdbcType=INTEGER} and id > #{parameters.p2,jdbcType=INTEGER} offset #{parameters._offset3} rows fetch first #{parameters._fetchFirstRows4} rows only"),
129-
() -> assertThat(selectStatement.getParameters().get("_fetchFirstRows4")).isEqualTo(3L),
130-
() -> assertThat(selectStatement.getParameters().get("_offset3")).isEqualTo(22L)
128+
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData where id < #{parameters.p1,jdbcType=INTEGER} and id > #{parameters.p2,jdbcType=INTEGER} offset #{parameters.p3} rows fetch first #{parameters.p4} rows only"),
129+
() -> assertThat(selectStatement.getParameters().get("p4")).isEqualTo(3L),
130+
() -> assertThat(selectStatement.getParameters().get("p3")).isEqualTo(22L)
131131
);
132132
}
133133
}
@@ -148,8 +148,8 @@ public void testFetchFirstOnlyAfterWhere() {
148148
assertAll(
149149
() -> assertThat(records.size()).isEqualTo(3),
150150
() -> assertThat(records.get(0).getId()).isEqualTo(1),
151-
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData where id < #{parameters.p1,jdbcType=INTEGER} fetch first #{parameters._fetchFirstRows2} rows only"),
152-
() -> assertThat(selectStatement.getParameters().get("_fetchFirstRows2")).isEqualTo(3L)
151+
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData where id < #{parameters.p1,jdbcType=INTEGER} fetch first #{parameters.p2} rows only"),
152+
() -> assertThat(selectStatement.getParameters().get("p2")).isEqualTo(3L)
153153
);
154154
}
155155
}
@@ -171,9 +171,9 @@ public void testOffsetAndFetchFirstAfterOrderBy() {
171171
assertAll(
172172
() -> assertThat(records.size()).isEqualTo(3),
173173
() -> assertThat(records.get(0).getId()).isEqualTo(23),
174-
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData order by id offset #{parameters._offset1} rows fetch first #{parameters._fetchFirstRows2} rows only"),
175-
() -> assertThat(selectStatement.getParameters().get("_fetchFirstRows2")).isEqualTo(3L),
176-
() -> assertThat(selectStatement.getParameters().get("_offset1")).isEqualTo(22L)
174+
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData order by id offset #{parameters.p1} rows fetch first #{parameters.p2} rows only"),
175+
() -> assertThat(selectStatement.getParameters().get("p2")).isEqualTo(3L),
176+
() -> assertThat(selectStatement.getParameters().get("p1")).isEqualTo(22L)
177177
);
178178
}
179179
}
@@ -194,8 +194,8 @@ public void testLimitOnlyAfterOrderBy() {
194194
assertAll(
195195
() -> assertThat(records.size()).isEqualTo(3),
196196
() -> assertThat(records.get(0).getId()).isEqualTo(1),
197-
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData order by id fetch first #{parameters._fetchFirstRows1} rows only"),
198-
() -> assertThat(selectStatement.getParameters().get("_fetchFirstRows1")).isEqualTo(3L)
197+
() -> assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData order by id fetch first #{parameters.p1} rows only"),
198+
() -> assertThat(selectStatement.getParameters().get("p1")).isEqualTo(3L)
199199
);
200200
}
201201
}

0 commit comments

Comments
 (0)