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