Skip to content

Commit f9d3dd7

Browse files
committed
Better pattern for "empty" conditions
1 parent 3aa57ee commit f9d3dd7

14 files changed

+181
-276
lines changed

src/main/java/org/mybatis/dynamic/sql/where/condition/IsBetween.java

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,18 @@
2222
import org.mybatis.dynamic.sql.util.Predicates;
2323

2424
public class IsBetween<T> extends AbstractTwoValueCondition<T, IsBetween<T>> {
25+
private static final IsBetween<?> EMPTY = new IsBetween<Object>(null, null) {
26+
@Override
27+
public boolean shouldRender() {
28+
return false;
29+
}
30+
};
31+
32+
public static <T> IsBetween<T> empty() {
33+
@SuppressWarnings("unchecked")
34+
IsBetween<T> t = (IsBetween<T>) EMPTY;
35+
return t;
36+
}
2537

2638
protected IsBetween(T value1, T value2) {
2739
super(value1, value2);
@@ -63,7 +75,7 @@ public IsBetween<T> then(UnaryOperator<T> mapper1, UnaryOperator<T> mapper2) {
6375

6476
@Override
6577
public IsBetween<T> filter(BiPredicate<T, T> predicate) {
66-
return filter(predicate, EmptyIsBetween::empty, this);
78+
return filter(predicate, IsBetween::empty, this);
6779
}
6880

6981
@Override
@@ -100,23 +112,4 @@ protected IsBetween<T> build() {
100112
return new IsBetween<>(value1, value2).filter(Predicates.bothPresent());
101113
}
102114
}
103-
104-
public static class EmptyIsBetween<T> extends IsBetween<T> {
105-
private static final EmptyIsBetween<?> EMPTY = new EmptyIsBetween<>();
106-
107-
public static <T> EmptyIsBetween<T> empty() {
108-
@SuppressWarnings("unchecked")
109-
EmptyIsBetween<T> t = (EmptyIsBetween<T>) EMPTY;
110-
return t;
111-
}
112-
113-
private EmptyIsBetween() {
114-
super(null, null);
115-
}
116-
117-
@Override
118-
public boolean shouldRender() {
119-
return false;
120-
}
121-
}
122115
}

src/main/java/org/mybatis/dynamic/sql/where/condition/IsEqualTo.java

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,19 @@
2222

2323
public class IsEqualTo<T> extends AbstractSingleValueCondition<T, IsEqualTo<T>> {
2424

25+
private static final IsEqualTo<?> EMPTY = new IsEqualTo<Object>(null) {
26+
@Override
27+
public boolean shouldRender() {
28+
return false;
29+
}
30+
};
31+
32+
public static <T> IsEqualTo<T> empty() {
33+
@SuppressWarnings("unchecked")
34+
IsEqualTo<T> t = (IsEqualTo<T>) EMPTY;
35+
return t;
36+
}
37+
2538
protected IsEqualTo(T value) {
2639
super(value);
2740
}
@@ -65,30 +78,11 @@ public IsEqualTo<T> then(UnaryOperator<T> mapper) {
6578

6679
@Override
6780
public IsEqualTo<T> filter(Predicate<T> predicate) {
68-
return filter(predicate, EmptyIsEqualTo::empty, this);
81+
return filter(predicate, IsEqualTo::empty, this);
6982
}
7083

7184
@Override
7285
public IsEqualTo<T> map(UnaryOperator<T> mapper) {
7386
return map(mapper, IsEqualTo::new, this);
7487
}
75-
76-
public static class EmptyIsEqualTo<T> extends IsEqualTo<T> {
77-
private static final EmptyIsEqualTo<?> EMPTY = new EmptyIsEqualTo<>();
78-
79-
public static <T> EmptyIsEqualTo<T> empty() {
80-
@SuppressWarnings("unchecked")
81-
EmptyIsEqualTo<T> t = (EmptyIsEqualTo<T>) EMPTY;
82-
return t;
83-
}
84-
85-
private EmptyIsEqualTo() {
86-
super(null);
87-
}
88-
89-
@Override
90-
public boolean shouldRender() {
91-
return false;
92-
}
93-
}
9488
}

src/main/java/org/mybatis/dynamic/sql/where/condition/IsGreaterThan.java

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@
2121
import org.mybatis.dynamic.sql.AbstractSingleValueCondition;
2222

2323
public class IsGreaterThan<T> extends AbstractSingleValueCondition<T, IsGreaterThan<T>> {
24+
private static final IsGreaterThan<?> EMPTY = new IsGreaterThan<Object>(null) {
25+
@Override
26+
public boolean shouldRender() {
27+
return false;
28+
}
29+
};
30+
31+
public static <T> IsGreaterThan<T> empty() {
32+
@SuppressWarnings("unchecked")
33+
IsGreaterThan<T> t = (IsGreaterThan<T>) EMPTY;
34+
return t;
35+
}
2436

2537
protected IsGreaterThan(T value) {
2638
super(value);
@@ -65,30 +77,11 @@ public IsGreaterThan<T> then(UnaryOperator<T> mapper) {
6577

6678
@Override
6779
public IsGreaterThan<T> filter(Predicate<T> predicate) {
68-
return filter(predicate, EmptyIsGreaterThan::empty, this);
80+
return filter(predicate, IsGreaterThan::empty, this);
6981
}
7082

7183
@Override
7284
public IsGreaterThan<T> map(UnaryOperator<T> mapper) {
7385
return map(mapper, IsGreaterThan::new, this);
7486
}
75-
76-
public static class EmptyIsGreaterThan<T> extends IsGreaterThan<T> {
77-
private static final EmptyIsGreaterThan<?> EMPTY = new EmptyIsGreaterThan<>();
78-
79-
public static <T> EmptyIsGreaterThan<T> empty() {
80-
@SuppressWarnings("unchecked")
81-
EmptyIsGreaterThan<T> t = (EmptyIsGreaterThan<T>) EMPTY;
82-
return t;
83-
}
84-
85-
private EmptyIsGreaterThan() {
86-
super(null);
87-
}
88-
89-
@Override
90-
public boolean shouldRender() {
91-
return false;
92-
}
93-
}
9487
}

src/main/java/org/mybatis/dynamic/sql/where/condition/IsGreaterThanOrEqualTo.java

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@
2121
import org.mybatis.dynamic.sql.AbstractSingleValueCondition;
2222

2323
public class IsGreaterThanOrEqualTo<T> extends AbstractSingleValueCondition<T, IsGreaterThanOrEqualTo<T>> {
24+
private static final IsGreaterThanOrEqualTo<?> EMPTY = new IsGreaterThanOrEqualTo<Object>(null) {
25+
@Override
26+
public boolean shouldRender() {
27+
return false;
28+
}
29+
};
30+
31+
public static <T> IsGreaterThanOrEqualTo<T> empty() {
32+
@SuppressWarnings("unchecked")
33+
IsGreaterThanOrEqualTo<T> t = (IsGreaterThanOrEqualTo<T>) EMPTY;
34+
return t;
35+
}
2436

2537
protected IsGreaterThanOrEqualTo(T value) {
2638
super(value);
@@ -65,30 +77,11 @@ public IsGreaterThanOrEqualTo<T> then(UnaryOperator<T> mapper) {
6577

6678
@Override
6779
public IsGreaterThanOrEqualTo<T> filter(Predicate<T> predicate) {
68-
return filter(predicate, EmptyIsGreaterThanOrEqualTo::empty, this);
80+
return filter(predicate, IsGreaterThanOrEqualTo::empty, this);
6981
}
7082

7183
@Override
7284
public IsGreaterThanOrEqualTo<T> map(UnaryOperator<T> mapper) {
7385
return map(mapper, IsGreaterThanOrEqualTo::new, this);
7486
}
75-
76-
public static class EmptyIsGreaterThanOrEqualTo<T> extends IsGreaterThanOrEqualTo<T> {
77-
private static final EmptyIsGreaterThanOrEqualTo<?> EMPTY = new EmptyIsGreaterThanOrEqualTo<>();
78-
79-
public static <T> EmptyIsGreaterThanOrEqualTo<T> empty() {
80-
@SuppressWarnings("unchecked")
81-
EmptyIsGreaterThanOrEqualTo<T> t = (EmptyIsGreaterThanOrEqualTo<T>) EMPTY;
82-
return t;
83-
}
84-
85-
private EmptyIsGreaterThanOrEqualTo() {
86-
super(null);
87-
}
88-
89-
@Override
90-
public boolean shouldRender() {
91-
return false;
92-
}
93-
}
9487
}

src/main/java/org/mybatis/dynamic/sql/where/condition/IsLessThan.java

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@
2121
import org.mybatis.dynamic.sql.AbstractSingleValueCondition;
2222

2323
public class IsLessThan<T> extends AbstractSingleValueCondition<T, IsLessThan<T>> {
24+
private static final IsLessThan<?> EMPTY = new IsLessThan<Object>(null) {
25+
@Override
26+
public boolean shouldRender() {
27+
return false;
28+
}
29+
};
30+
31+
public static <T> IsLessThan<T> empty() {
32+
@SuppressWarnings("unchecked")
33+
IsLessThan<T> t = (IsLessThan<T>) EMPTY;
34+
return t;
35+
}
2436

2537
protected IsLessThan(T value) {
2638
super(value);
@@ -65,30 +77,11 @@ public IsLessThan<T> then(UnaryOperator<T> mapper) {
6577

6678
@Override
6779
public IsLessThan<T> filter(Predicate<T> predicate) {
68-
return filter(predicate, EmptyIsLessThan::empty, this);
80+
return filter(predicate, IsLessThan::empty, this);
6981
}
7082

7183
@Override
7284
public IsLessThan<T> map(UnaryOperator<T> mapper) {
7385
return map(mapper, IsLessThan::new, this);
7486
}
75-
76-
public static class EmptyIsLessThan<T> extends IsLessThan<T> {
77-
private static final EmptyIsLessThan<?> EMPTY = new EmptyIsLessThan<>();
78-
79-
public static <T> EmptyIsLessThan<T> empty() {
80-
@SuppressWarnings("unchecked")
81-
EmptyIsLessThan<T> t = (EmptyIsLessThan<T>) EMPTY;
82-
return t;
83-
}
84-
85-
private EmptyIsLessThan() {
86-
super(null);
87-
}
88-
89-
@Override
90-
public boolean shouldRender() {
91-
return false;
92-
}
93-
}
9487
}

src/main/java/org/mybatis/dynamic/sql/where/condition/IsLessThanOrEqualTo.java

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@
2121
import org.mybatis.dynamic.sql.AbstractSingleValueCondition;
2222

2323
public class IsLessThanOrEqualTo<T> extends AbstractSingleValueCondition<T, IsLessThanOrEqualTo<T>> {
24+
private static final IsLessThanOrEqualTo<?> EMPTY = new IsLessThanOrEqualTo<Object>(null) {
25+
@Override
26+
public boolean shouldRender() {
27+
return false;
28+
}
29+
};
30+
31+
public static <T> IsLessThanOrEqualTo<T> empty() {
32+
@SuppressWarnings("unchecked")
33+
IsLessThanOrEqualTo<T> t = (IsLessThanOrEqualTo<T>) EMPTY;
34+
return t;
35+
}
2436

2537
protected IsLessThanOrEqualTo(T value) {
2638
super(value);
@@ -65,30 +77,11 @@ public IsLessThanOrEqualTo<T> then(UnaryOperator<T> mapper) {
6577

6678
@Override
6779
public IsLessThanOrEqualTo<T> filter(Predicate<T> predicate) {
68-
return filter(predicate, EmptyIsLessThanOrEqualTo::empty, this);
80+
return filter(predicate, IsLessThanOrEqualTo::empty, this);
6981
}
7082

7183
@Override
7284
public IsLessThanOrEqualTo<T> map(UnaryOperator<T> mapper) {
7385
return map(mapper, IsLessThanOrEqualTo::new, this);
7486
}
75-
76-
public static class EmptyIsLessThanOrEqualTo<T> extends IsLessThanOrEqualTo<T> {
77-
private static final EmptyIsLessThanOrEqualTo<?> EMPTY = new EmptyIsLessThanOrEqualTo<>();
78-
79-
public static <T> EmptyIsLessThanOrEqualTo<T> empty() {
80-
@SuppressWarnings("unchecked")
81-
EmptyIsLessThanOrEqualTo<T> t = (EmptyIsLessThanOrEqualTo<T>) EMPTY;
82-
return t;
83-
}
84-
85-
private EmptyIsLessThanOrEqualTo() {
86-
super(null);
87-
}
88-
89-
@Override
90-
public boolean shouldRender() {
91-
return false;
92-
}
93-
}
9487
}

src/main/java/org/mybatis/dynamic/sql/where/condition/IsLike.java

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@
2121
import org.mybatis.dynamic.sql.AbstractSingleValueCondition;
2222

2323
public class IsLike<T> extends AbstractSingleValueCondition<T, IsLike<T>> {
24+
private static final IsLike<?> EMPTY = new IsLike<Object>(null) {
25+
@Override
26+
public boolean shouldRender() {
27+
return false;
28+
}
29+
};
30+
31+
public static <T> IsLike<T> empty() {
32+
@SuppressWarnings("unchecked")
33+
IsLike<T> t = (IsLike<T>) EMPTY;
34+
return t;
35+
}
2436

2537
protected IsLike(T value) {
2638
super(value);
@@ -65,30 +77,11 @@ public IsLike<T> then(UnaryOperator<T> mapper) {
6577

6678
@Override
6779
public IsLike<T> filter(Predicate<T> predicate) {
68-
return filter(predicate, EmptyIsLike::empty, this);
80+
return filter(predicate, IsLike::empty, this);
6981
}
7082

7183
@Override
7284
public IsLike<T> map(UnaryOperator<T> mapper) {
7385
return map(mapper, IsLike::new, this);
7486
}
75-
76-
public static class EmptyIsLike<T> extends IsLike<T> {
77-
private static final EmptyIsLike<?> EMPTY = new EmptyIsLike<>();
78-
79-
public static <T> EmptyIsLike<T> empty() {
80-
@SuppressWarnings("unchecked")
81-
EmptyIsLike<T> t = (EmptyIsLike<T>) EMPTY;
82-
return t;
83-
}
84-
85-
private EmptyIsLike() {
86-
super(null);
87-
}
88-
89-
@Override
90-
public boolean shouldRender() {
91-
return false;
92-
}
93-
}
9487
}

0 commit comments

Comments
 (0)