@@ -24,85 +24,90 @@ import org.mybatis.dynamic.sql.util.Buildable
2424import org.mybatis.dynamic.sql.where.AbstractWhereDSL
2525
2626abstract 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
6166
6267 protected abstract fun getWhere (): W
63- protected abstract fun getThis (): B
6468}
6569
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+ }
108113}
0 commit comments