Skip to content

Commit 1d52492

Browse files
committed
Fix Having/Where Appliers
This fix makes the methods build clauses in a more natural way - parentheses are where they are expected.
1 parent 3a354f9 commit 1d52492

File tree

5 files changed

+18
-16
lines changed

5 files changed

+18
-16
lines changed

src/main/java/org/mybatis/dynamic/sql/select/AbstractHavingFinisher.java

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

18+
import org.mybatis.dynamic.sql.AndOrCriteriaGroup;
1819
import org.mybatis.dynamic.sql.SqlCriterion;
1920
import org.mybatis.dynamic.sql.common.AbstractBooleanExpressionDSL;
2021

22+
import java.util.List;
23+
2124
public abstract class AbstractHavingFinisher<T extends AbstractHavingFinisher<T>>
2225
extends AbstractBooleanExpressionDSL<T> {
2326
void initialize(SqlCriterion sqlCriterion) {
2427
setInitialCriterion(sqlCriterion, StatementType.HAVING);
2528
}
2629

30+
void initialize(SqlCriterion sqlCriterion, List<AndOrCriteriaGroup> subCriteria) {
31+
setInitialCriterion(sqlCriterion, StatementType.HAVING);
32+
super.subCriteria.addAll(subCriteria);
33+
}
34+
2735
protected HavingModel buildModel() {
2836
return new HavingModel(getInitialCriterion(), subCriteria);
2937
}

src/main/java/org/mybatis/dynamic/sql/select/HavingDSL.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package org.mybatis.dynamic.sql.select;
1717

1818
import org.jetbrains.annotations.NotNull;
19-
import org.mybatis.dynamic.sql.CriteriaGroup;
2019
import org.mybatis.dynamic.sql.util.Buildable;
2120

2221
public class HavingDSL extends AbstractHavingStarter<HavingDSL.StandaloneHavingFinisher> {
@@ -44,12 +43,7 @@ public HavingModel build() {
4443
}
4544

4645
public HavingApplier toHavingApplier() {
47-
CriteriaGroup ic = new CriteriaGroup.Builder()
48-
.withInitialCriterion(getInitialCriterion())
49-
.withSubCriteria(subCriteria)
50-
.build();
51-
52-
return d -> d.initialize(ic);
46+
return d -> d.initialize(getInitialCriterion(), subCriteria);
5347
}
5448
}
5549
}

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

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

18+
import java.util.List;
1819
import java.util.Objects;
1920
import java.util.function.Consumer;
2021

22+
import org.mybatis.dynamic.sql.AndOrCriteriaGroup;
2123
import org.mybatis.dynamic.sql.SqlCriterion;
2224
import org.mybatis.dynamic.sql.common.AbstractBooleanExpressionDSL;
2325
import org.mybatis.dynamic.sql.configuration.StatementConfiguration;
@@ -31,6 +33,11 @@ void initialize(SqlCriterion sqlCriterion) {
3133
setInitialCriterion(sqlCriterion, StatementType.WHERE);
3234
}
3335

36+
void initialize(SqlCriterion sqlCriterion, List<AndOrCriteriaGroup> subCriteria) {
37+
setInitialCriterion(sqlCriterion, StatementType.WHERE);
38+
super.subCriteria.addAll(subCriteria);
39+
}
40+
3441
protected AbstractWhereFinisher(StatementConfiguration statementConfiguration) {
3542
this.statementConfiguration = Objects.requireNonNull(statementConfiguration);
3643
}

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import java.util.function.Consumer;
1919

2020
import org.jetbrains.annotations.NotNull;
21-
import org.mybatis.dynamic.sql.CriteriaGroup;
2221
import org.mybatis.dynamic.sql.configuration.StatementConfiguration;
2322
import org.mybatis.dynamic.sql.util.Buildable;
2423

@@ -55,12 +54,7 @@ public WhereModel build() {
5554
}
5655

5756
public WhereApplier toWhereApplier() {
58-
CriteriaGroup ic = new CriteriaGroup.Builder()
59-
.withInitialCriterion(getInitialCriterion())
60-
.withSubCriteria(subCriteria)
61-
.build();
62-
63-
return d -> d.initialize(ic);
57+
return d -> d.initialize(getInitialCriterion(), subCriteria);
6458
}
6559
}
6660
}

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

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

100100
}
101101

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

0 commit comments

Comments
 (0)