1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql.where.condition;
17
18 import java.util.NoSuchElementException;
19 import java.util.function.Function;
20 import java.util.function.Predicate;
21
22 import org.mybatis.dynamic.sql.AbstractSingleValueCondition;
23
24 public class IsEqualTo<T> extends AbstractSingleValueCondition<T>
25 implements AbstractSingleValueCondition.Filterable<T>, AbstractSingleValueCondition.Mappable<T> {
26
27 private static final IsEqualTo<?> EMPTY = new IsEqualTo<Object>(-1) {
28 @Override
29 public Object value() {
30 throw new NoSuchElementException("No value present");
31 }
32
33 @Override
34 public boolean isEmpty() {
35 return true;
36 }
37 };
38
39 public static <T> IsEqualTo<T> empty() {
40 @SuppressWarnings("unchecked")
41 IsEqualTo<T> t = (IsEqualTo<T>) EMPTY;
42 return t;
43 }
44
45 protected IsEqualTo(T value) {
46 super(value);
47 }
48
49 @Override
50 public String operator() {
51 return "=";
52 }
53
54 public static <T> IsEqualTo<T> of(T value) {
55 return new IsEqualTo<>(value);
56 }
57
58 @Override
59 public IsEqualTo<T> filter(Predicate<? super T> predicate) {
60 return filterSupport(predicate, IsEqualTo::empty, this);
61 }
62
63 @Override
64 public <R> IsEqualTo<R> map(Function<? super T, ? extends R> mapper) {
65 return mapSupport(mapper, IsEqualTo::new, IsEqualTo::empty);
66 }
67 }