@@ -24,85 +24,90 @@ import org.mybatis.dynamic.sql.util.Buildable
24
24
import org.mybatis.dynamic.sql.where.AbstractWhereDSL
25
25
26
26
abstract class KotlinBaseBuilder <M , W : AbstractWhereDSL <W >, B : KotlinBaseBuilder <M , W , B >> : Buildable <M > {
27
- fun <T > where (column : BindableColumn <T >, condition : VisitableCondition <T >): B {
28
- getWhere().where(column, condition)
29
- return getThis()
30
- }
31
-
32
- fun <T > where (column : BindableColumn <T >, condition : VisitableCondition <T >, collect : CriteriaReceiver ): B {
33
- getWhere().where(column, condition, collect)
34
- return getThis()
35
- }
36
-
37
- fun applyWhere (whereApplier : WhereApplier ): B {
38
- getWhere().applyWhere(whereApplier)
39
- return getThis()
40
- }
41
-
42
- fun <T > and (column : BindableColumn <T >, condition : VisitableCondition <T >): B {
43
- getWhere().and (column, condition)
44
- return getThis()
45
- }
46
-
47
- fun <T > and (column : BindableColumn <T >, condition : VisitableCondition <T >, collect : CriteriaReceiver ): B {
48
- getWhere().and (column, condition, collect)
49
- return getThis()
50
- }
51
-
52
- fun <T > or (column : BindableColumn <T >, condition : VisitableCondition <T >): B {
53
- getWhere().or (column, condition)
54
- return getThis()
55
- }
56
-
57
- fun <T > or (column : BindableColumn <T >, condition : VisitableCondition <T >, collect : CriteriaReceiver ): B {
58
- getWhere().or (column, condition, collect)
59
- return getThis()
60
- }
27
+ fun <T > where (column : BindableColumn <T >, condition : VisitableCondition <T >): B =
28
+ applySelf {
29
+ getWhere().where(column, condition)
30
+ }
31
+
32
+ fun <T > where (column : BindableColumn <T >, condition : VisitableCondition <T >, collect : CriteriaReceiver ): B =
33
+ applySelf {
34
+ getWhere().where(column, condition, collect)
35
+ }
36
+
37
+ fun applyWhere (whereApplier : WhereApplier ): B =
38
+ applySelf {
39
+ getWhere().applyWhere(whereApplier)
40
+ }
41
+
42
+ fun <T > and (column : BindableColumn <T >, condition : VisitableCondition <T >): B =
43
+ applySelf {
44
+ getWhere().and (column, condition)
45
+ }
46
+
47
+ fun <T > and (column : BindableColumn <T >, condition : VisitableCondition <T >, collect : CriteriaReceiver ): B =
48
+ applySelf {
49
+ getWhere().and (column, condition, collect)
50
+ }
51
+
52
+ fun <T > or (column : BindableColumn <T >, condition : VisitableCondition <T >): B =
53
+ applySelf {
54
+ getWhere().or (column, condition)
55
+ }
56
+
57
+ fun <T > or (column : BindableColumn <T >, condition : VisitableCondition <T >, collect : CriteriaReceiver ): B =
58
+ applySelf {
59
+ getWhere().or (column, condition, collect)
60
+ }
61
+
62
+ protected fun applySelf (block : B .() -> Unit ): B =
63
+ self().apply { block() }
64
+
65
+ protected abstract fun self (): B
61
66
62
67
protected abstract fun getWhere (): W
63
- protected abstract fun getThis (): B
64
68
}
65
69
66
- abstract class KotlinBaseJoiningBuilder <T : AbstractQueryExpressionDSL <T , SelectModel >, W : AbstractWhereDSL <W >, B : KotlinBaseJoiningBuilder <T , W , B >>(private val dsl : AbstractQueryExpressionDSL <T , SelectModel >) :
67
- KotlinBaseBuilder <SelectModel , W , B >() {
68
-
69
- fun join (table : SqlTable , receiver : JoinReceiver ) =
70
- apply {
71
- dsl.join(table, receiver)
72
- }
73
-
74
- fun join (table : SqlTable , alias : String , receiver : JoinReceiver ) =
75
- apply {
76
- dsl.join(table, alias, receiver)
77
- }
78
-
79
- fun fullJoin (table : SqlTable , receiver : JoinReceiver ) =
80
- apply {
81
- dsl.fullJoin(table, receiver)
82
- }
83
-
84
- fun fullJoin (table : SqlTable , alias : String , receiver : JoinReceiver ) =
85
- apply {
86
- dsl.fullJoin(table, alias, receiver)
87
- }
88
-
89
- fun leftJoin (table : SqlTable , receiver : JoinReceiver ) =
90
- apply {
91
- dsl.leftJoin(table, receiver)
92
- }
93
-
94
- fun leftJoin (table : SqlTable , alias : String , receiver : JoinReceiver ) =
95
- apply {
96
- dsl.leftJoin(table, alias, receiver)
97
- }
98
-
99
- fun rightJoin (table : SqlTable , receiver : JoinReceiver ) =
100
- apply {
101
- dsl.rightJoin(table, receiver)
102
- }
103
-
104
- fun rightJoin (table : SqlTable , alias : String , receiver : JoinReceiver ) =
105
- apply {
106
- dsl.rightJoin(table, alias, receiver)
107
- }
70
+ abstract class KotlinBaseJoiningBuilder <T : AbstractQueryExpressionDSL <T , SelectModel >, W : AbstractWhereDSL <W >, B : KotlinBaseJoiningBuilder <T , W , B >>(
71
+ private val dsl : AbstractQueryExpressionDSL <T , SelectModel >
72
+ ) : KotlinBaseBuilder<SelectModel, W, B>() {
73
+
74
+ fun join (table : SqlTable , receiver : JoinReceiver ): B =
75
+ applySelf {
76
+ dsl.join(table, receiver)
77
+ }
78
+
79
+ fun join (table : SqlTable , alias : String , receiver : JoinReceiver ): B =
80
+ applySelf {
81
+ dsl.join(table, alias, receiver)
82
+ }
83
+
84
+ fun fullJoin (table : SqlTable , receiver : JoinReceiver ): B =
85
+ applySelf {
86
+ dsl.fullJoin(table, receiver)
87
+ }
88
+
89
+ fun fullJoin (table : SqlTable , alias : String , receiver : JoinReceiver ): B =
90
+ applySelf {
91
+ dsl.fullJoin(table, alias, receiver)
92
+ }
93
+
94
+ fun leftJoin (table : SqlTable , receiver : JoinReceiver ): B =
95
+ applySelf {
96
+ dsl.leftJoin(table, receiver)
97
+ }
98
+
99
+ fun leftJoin (table : SqlTable , alias : String , receiver : JoinReceiver ): B =
100
+ applySelf {
101
+ dsl.leftJoin(table, alias, receiver)
102
+ }
103
+
104
+ fun rightJoin (table : SqlTable , receiver : JoinReceiver ): B =
105
+ applySelf {
106
+ dsl.rightJoin(table, receiver)
107
+ }
108
+
109
+ fun rightJoin (table : SqlTable , alias : String , receiver : JoinReceiver ): B =
110
+ applySelf {
111
+ dsl.rightJoin(table, alias, receiver)
112
+ }
108
113
}
0 commit comments