Skip to content

Commit 392cf02

Browse files
committed
Reuse standalone where DSL when possible
1 parent 4f94e55 commit 392cf02

File tree

7 files changed

+29
-86
lines changed

7 files changed

+29
-86
lines changed

src/main/java/org/mybatis/dynamic/sql/SqlBuilder.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,20 +240,20 @@ static UpdateDSL<UpdateModel> update(SqlTable table, String tableAlias) {
240240
return UpdateDSL.update(table, tableAlias);
241241
}
242242

243-
static WhereDSL.WhereFinisher where() {
243+
static WhereDSL.StandaloneWhereFinisher where() {
244244
return new WhereDSL().where();
245245
}
246246

247-
static <T> WhereDSL.WhereFinisher where(BindableColumn<T> column, VisitableCondition<T> condition,
248-
AndOrCriteriaGroup... subCriteria) {
247+
static <T> WhereDSL.StandaloneWhereFinisher where(BindableColumn<T> column, VisitableCondition<T> condition,
248+
AndOrCriteriaGroup... subCriteria) {
249249
return new WhereDSL().where(column, condition, subCriteria);
250250
}
251251

252-
static WhereDSL.WhereFinisher where(SqlCriterion initialCriterion, AndOrCriteriaGroup... subCriteria) {
252+
static WhereDSL.StandaloneWhereFinisher where(SqlCriterion initialCriterion, AndOrCriteriaGroup... subCriteria) {
253253
return new WhereDSL().where(initialCriterion, subCriteria);
254254
}
255255

256-
static WhereDSL.WhereFinisher where(ExistsPredicate existsPredicate, AndOrCriteriaGroup... subCriteria) {
256+
static WhereDSL.StandaloneWhereFinisher where(ExistsPredicate existsPredicate, AndOrCriteriaGroup... subCriteria) {
257257
return new WhereDSL().where(existsPredicate, subCriteria);
258258
}
259259

src/main/java/org/mybatis/dynamic/sql/where/WhereApplier.java

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

18-
import java.util.Arrays;
19-
import java.util.List;
2018
import java.util.function.Consumer;
2119

22-
import org.jetbrains.annotations.NotNull;
23-
import org.mybatis.dynamic.sql.AndOrCriteriaGroup;
24-
import org.mybatis.dynamic.sql.BindableColumn;
25-
import org.mybatis.dynamic.sql.ColumnAndConditionCriterion;
26-
import org.mybatis.dynamic.sql.CriteriaGroup;
27-
import org.mybatis.dynamic.sql.ExistsCriterion;
28-
import org.mybatis.dynamic.sql.ExistsPredicate;
29-
import org.mybatis.dynamic.sql.SqlCriterion;
30-
import org.mybatis.dynamic.sql.VisitableCondition;
3120
import org.mybatis.dynamic.sql.common.AbstractBooleanExpressionDSL;
3221

3322
@FunctionalInterface
@@ -47,60 +36,4 @@ default WhereApplier andThen(Consumer<AbstractBooleanExpressionDSL<?>> after) {
4736
after.accept(t);
4837
};
4938
}
50-
51-
@NotNull
52-
static <T> WhereApplier where(BindableColumn<T> column, VisitableCondition<T> condition,
53-
AndOrCriteriaGroup... subCriteria) {
54-
return where(column, condition, Arrays.asList(subCriteria));
55-
}
56-
57-
@NotNull
58-
static <T> WhereApplier where(BindableColumn<T> column, VisitableCondition<T> condition,
59-
List<AndOrCriteriaGroup> subCriteria) {
60-
ColumnAndConditionCriterion<T> ic = ColumnAndConditionCriterion.withColumn(column)
61-
.withCondition(condition)
62-
.withSubCriteria(subCriteria)
63-
.build();
64-
65-
return d -> d.initialize(ic);
66-
}
67-
68-
@NotNull
69-
static WhereApplier where(ExistsPredicate existsPredicate, AndOrCriteriaGroup... subCriteria) {
70-
return where(existsPredicate, Arrays.asList(subCriteria));
71-
}
72-
73-
@NotNull
74-
static WhereApplier where(ExistsPredicate existsPredicate, List<AndOrCriteriaGroup> subCriteria) {
75-
ExistsCriterion ic = new ExistsCriterion.Builder()
76-
.withExistsPredicate(existsPredicate)
77-
.withSubCriteria(subCriteria)
78-
.build();
79-
80-
return d -> d.initialize(ic);
81-
}
82-
83-
@NotNull
84-
static WhereApplier where(SqlCriterion initialCriterion, AndOrCriteriaGroup... subCriteria) {
85-
return where(initialCriterion, Arrays.asList(subCriteria));
86-
}
87-
88-
@NotNull
89-
static WhereApplier where(SqlCriterion initialCriterion, List<AndOrCriteriaGroup> subCriteria) {
90-
CriteriaGroup ic = new CriteriaGroup.Builder()
91-
.withInitialCriterion(initialCriterion)
92-
.withSubCriteria(subCriteria)
93-
.build();
94-
95-
return d -> d.initialize(ic);
96-
}
97-
98-
@NotNull
99-
static WhereApplier where(List<AndOrCriteriaGroup> criteria) {
100-
CriteriaGroup ic = new CriteriaGroup.Builder()
101-
.withSubCriteria(criteria)
102-
.build();
103-
104-
return d -> d.initialize(ic);
105-
}
10639
}

src/main/java/org/mybatis/dynamic/sql/where/WhereDSL.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,20 @@
1818
import java.util.function.Consumer;
1919

2020
import org.jetbrains.annotations.NotNull;
21+
import org.mybatis.dynamic.sql.CriteriaGroup;
2122
import org.mybatis.dynamic.sql.configuration.StatementConfiguration;
2223
import org.mybatis.dynamic.sql.util.Buildable;
2324

24-
public class WhereDSL extends AbstractWhereStarter<WhereDSL.WhereFinisher, WhereDSL> implements Buildable<WhereModel> {
25-
private WhereFinisher whereBuilder;
25+
public class WhereDSL extends AbstractWhereStarter<WhereDSL.StandaloneWhereFinisher, WhereDSL> implements Buildable<WhereModel> {
26+
private StandaloneWhereFinisher whereBuilder;
2627
private final StatementConfiguration statementConfiguration = new StatementConfiguration();
2728

2829
public WhereDSL() { }
2930

3031
@Override
31-
public WhereFinisher where() {
32+
public StandaloneWhereFinisher where() {
3233
if (whereBuilder == null) {
33-
whereBuilder = new WhereFinisher();
34+
whereBuilder = new StandaloneWhereFinisher();
3435
}
3536
return whereBuilder;
3637
}
@@ -47,13 +48,13 @@ public WhereDSL configureStatement(Consumer<StatementConfiguration> consumer) {
4748
return this;
4849
}
4950

50-
public class WhereFinisher extends AbstractWhereFinisher<WhereFinisher> implements Buildable<WhereModel> {
51-
private WhereFinisher() {
51+
public class StandaloneWhereFinisher extends AbstractWhereFinisher<StandaloneWhereFinisher> implements Buildable<WhereModel> {
52+
private StandaloneWhereFinisher() {
5253
super(statementConfiguration);
5354
}
5455

5556
@Override
56-
protected WhereFinisher getThis() {
57+
protected StandaloneWhereFinisher getThis() {
5758
return this;
5859
}
5960

@@ -62,5 +63,14 @@ protected WhereFinisher getThis() {
6263
public WhereModel build() {
6364
return WhereDSL.this.build();
6465
}
66+
67+
public WhereApplier toWhereApplier() {
68+
CriteriaGroup ic = new CriteriaGroup.Builder()
69+
.withInitialCriterion(getInitialCriterion())
70+
.withSubCriteria(subCriteria)
71+
.build();
72+
73+
return d -> d.initialize(ic);
74+
}
6575
}
6676
}

src/test/java/examples/emptywhere/EmptyWhereTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ void testWhereThreeConditions() {
262262
String fName = "Fred";
263263
String lName = "Flintstone";
264264

265-
WhereDSL.WhereFinisher builder = where(id, isEqualTo(3));
265+
WhereDSL.StandaloneWhereFinisher builder = where(id, isEqualTo(3));
266266

267267
builder.and(firstName, isEqualTo(fName).filter(Objects::nonNull));
268268
builder.and(PersonDynamicSqlSupport.lastName, isEqualTo(lName).filter(Objects::nonNull));
@@ -281,7 +281,7 @@ void testWhereThreeConditions() {
281281
@ParameterizedTest
282282
@MethodSource("whereVariations")
283283
void testWhereVariations(Variation variation) {
284-
WhereDSL.WhereFinisher builder = where();
284+
WhereDSL.StandaloneWhereFinisher builder = where();
285285

286286
builder.and(firstName, isEqualTo(variation.firstName).filter(Objects::nonNull));
287287
builder.or(PersonDynamicSqlSupport.lastName, isEqualTo(variation.lastName).filter(Objects::nonNull));

src/test/java/examples/joins/JoinMapperTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
5050
import org.mybatis.dynamic.sql.util.Messages;
5151
import org.mybatis.dynamic.sql.util.mybatis3.CommonSelectMapper;
52-
import org.mybatis.dynamic.sql.where.WhereApplier;
5352

5453
class JoinMapperTest {
5554

@@ -271,7 +270,7 @@ void testMultipleTableJoinWithApplyWhere() {
271270
.from(orderMaster, "om")
272271
.join(orderLine, "ol").on(orderMaster.orderId, equalTo(orderLine.orderId))
273272
.join(itemMaster, "im").on(orderLine.itemId, equalTo(itemMaster.itemId))
274-
.applyWhere(WhereApplier.where(orderMaster.orderId, isEqualTo(2)))
273+
.applyWhere(where(orderMaster.orderId, isEqualTo(2)).toWhereApplier())
275274
.build()
276275
.render(RenderingStrategies.MYBATIS3);
277276

src/test/java/examples/simple/ReusableWhereTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static org.assertj.core.api.Assertions.assertThat;
2121
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
2222
import static org.mybatis.dynamic.sql.SqlBuilder.isNull;
23+
import static org.mybatis.dynamic.sql.SqlBuilder.where;
2324

2425
import java.io.InputStream;
2526
import java.io.InputStreamReader;
@@ -113,6 +114,5 @@ void testUpdate() {
113114
}
114115
}
115116

116-
private final WhereApplier commonWhere = WhereApplier.where(id, isEqualTo(1))
117-
.andThen(wa -> wa.or(occupation, isNull()));
117+
private final WhereApplier commonWhere = where(id, isEqualTo(1)).or(occupation, isNull()).toWhereApplier();
118118
}

src/test/java/examples/spring/ReusableWhereTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,6 @@ void testComposition() {
9999

100100
}
101101

102-
private final WhereApplier commonWhere = WhereApplier.where(id, isEqualTo(1)).andThen(wa -> wa.or(occupation, isNull()));
102+
private final WhereApplier commonWhere = where(id, isEqualTo(1)).toWhereApplier()
103+
.andThen(wa -> wa.or(occupation, isNull()));
103104
}

0 commit comments

Comments
 (0)