1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql;
17
18 import java.util.Objects;
19
20 import org.jspecify.annotations.Nullable;
21
22 public class ColumnAndConditionCriterion<T> extends SqlCriterion {
23 private final BindableColumn<T> column;
24 private final RenderableCondition<T> condition;
25
26 private ColumnAndConditionCriterion(Builder<T> builder) {
27 super(builder);
28 column = Objects.requireNonNull(builder.column);
29 condition = Objects.requireNonNull(builder.condition);
30 }
31
32 public BindableColumn<T> column() {
33 return column;
34 }
35
36 public RenderableCondition<T> condition() {
37 return condition;
38 }
39
40 @Override
41 public <R> R accept(SqlCriterionVisitor<R> visitor) {
42 return visitor.visit(this);
43 }
44
45 public static <T> Builder<T> withColumn(BindableColumn<T> column) {
46 return new Builder<T>().withColumn(column);
47 }
48
49 public static class Builder<T> extends AbstractBuilder<Builder<T>> {
50 private @Nullable BindableColumn<T> column;
51 private @Nullable RenderableCondition<T> condition;
52
53 public Builder<T> withColumn(BindableColumn<T> column) {
54 this.column = column;
55 return this;
56 }
57
58 public Builder<T> withCondition(RenderableCondition<T> condition) {
59 this.condition = condition;
60 return this;
61 }
62
63 @Override
64 protected Builder<T> getThis() {
65 return this;
66 }
67
68 public ColumnAndConditionCriterion<T> build() {
69 return new ColumnAndConditionCriterion<>(this);
70 }
71 }
72 }