@@ -38,61 +38,93 @@ fun WhereApplier.andThen(after: WhereApplier): WhereApplier = {
3838@MyBatisDslMarker
3939@Suppress(" TooManyFunctions" )
4040abstract class KotlinBaseBuilder <D : AbstractWhereSupport <* >, B : KotlinBaseBuilder <D , B >> {
41- fun where (criteria : GroupingCriteriaReceiver ) {
42- val criteriaCollector = GroupingCriteriaCollector ().apply (criteria)
43-
44- getDsl().where(criteriaCollector.initialCriterion, criteriaCollector.subCriteria)
45- }
41+ fun where (criteria : GroupingCriteriaReceiver ): Unit =
42+ with (GroupingCriteriaCollector ().apply (criteria)) {
43+ this @KotlinBaseBuilder.getDsl().where(initialCriterion, subCriteria)
44+ }
4645
47- fun and (criteria : GroupingCriteriaReceiver ) {
48- val criteriaCollector = GroupingCriteriaCollector ().apply (criteria)
46+ fun and (criteria : GroupingCriteriaReceiver ): Unit =
47+ with (GroupingCriteriaCollector ().apply (criteria)) {
48+ this @KotlinBaseBuilder.getDsl().where().and (initialCriterion, subCriteria)
49+ }
4950
50- getDsl().where().and (criteriaCollector.initialCriterion, criteriaCollector.subCriteria)
51- }
51+ fun or (criteria : GroupingCriteriaReceiver ): Unit =
52+ with (GroupingCriteriaCollector ().apply (criteria)) {
53+ this @KotlinBaseBuilder.getDsl().where().or (initialCriterion, subCriteria)
54+ }
5255
53- fun or (criteria : GroupingCriteriaReceiver ) {
54- val criteriaCollector = GroupingCriteriaCollector ().apply (criteria)
56+ fun applyWhere (whereApplier : WhereApplier ): B =
57+ self().apply {
58+ whereApplier.invoke(this )
59+ }
5560
56- getDsl().where().or (criteriaCollector.initialCriterion, criteriaCollector.subCriteria)
57- }
61+ fun <T > where (column : BindableColumn <T >, condition : VisitableCondition <T >): B =
62+ applyToWhere {
63+ where(column, condition)
64+ }
5865
59- fun <T > where (column : BindableColumn <T >, condition : VisitableCondition <T >, subCriteria : CriteriaReceiver = {} ): B =
66+ fun <T > where (column : BindableColumn <T >, condition : VisitableCondition <T >, subCriteria : CriteriaReceiver ): B =
6067 applyToWhere(subCriteria) { sc ->
6168 where(column, condition, sc)
6269 }
6370
64- fun where (existsPredicate : ExistsPredicate , subCriteria : CriteriaReceiver = {}): B =
71+ fun where (existsPredicate : ExistsPredicate ): B =
72+ applyToWhere {
73+ where(existsPredicate)
74+ }
75+
76+ fun where (existsPredicate : ExistsPredicate , subCriteria : CriteriaReceiver ): B =
6577 applyToWhere(subCriteria) { sc ->
6678 where(existsPredicate, sc)
6779 }
6880
69- fun applyWhere ( whereApplier : WhereApplier ): B =
70- self(). apply {
71- whereApplier.invoke( this )
81+ fun < T > and ( column : BindableColumn < T >, condition : VisitableCondition < T > ): B =
82+ applyToWhere {
83+ and (column, condition )
7284 }
7385
74- fun <T > and (column : BindableColumn <T >, condition : VisitableCondition <T >, subCriteria : CriteriaReceiver = {} ): B =
86+ fun <T > and (column : BindableColumn <T >, condition : VisitableCondition <T >, subCriteria : CriteriaReceiver ): B =
7587 applyToWhere(subCriteria) { sc ->
7688 and (column, condition, sc)
7789 }
7890
79- fun and (existsPredicate : ExistsPredicate , subCriteria : CriteriaReceiver = {}): B =
91+ fun and (existsPredicate : ExistsPredicate ): B =
92+ applyToWhere {
93+ and (existsPredicate)
94+ }
95+
96+ fun and (existsPredicate : ExistsPredicate , subCriteria : CriteriaReceiver ): B =
8097 applyToWhere(subCriteria) { sc ->
8198 and (existsPredicate, sc)
8299 }
83100
84- fun <T > or (column : BindableColumn <T >, condition : VisitableCondition <T >, subCriteria : CriteriaReceiver = {}): B =
101+ fun <T > or (column : BindableColumn <T >, condition : VisitableCondition <T >): B =
102+ applyToWhere {
103+ or (column, condition)
104+ }
105+
106+ fun <T > or (column : BindableColumn <T >, condition : VisitableCondition <T >, subCriteria : CriteriaReceiver ): B =
85107 applyToWhere(subCriteria) { sc ->
86108 or (column, condition, sc)
87109 }
88110
89- fun or (existsPredicate : ExistsPredicate , subCriteria : CriteriaReceiver = {}): B =
111+ fun or (existsPredicate : ExistsPredicate ): B =
112+ applyToWhere {
113+ or (existsPredicate)
114+ }
115+
116+ fun or (existsPredicate : ExistsPredicate , subCriteria : CriteriaReceiver ): B =
90117 applyToWhere(subCriteria) { sc ->
91118 or (existsPredicate, sc)
92119 }
93120
94121 fun allRows (): B = self()
95122
123+ private fun applyToWhere (block : AbstractWhereDSL <* >.() -> Unit ): B {
124+ getDsl().where().apply (block)
125+ return self()
126+ }
127+
96128 private fun applyToWhere (
97129 subCriteria : CriteriaReceiver ,
98130 block : AbstractWhereDSL <* >.(List <AndOrCriteriaGroup >) -> Unit
0 commit comments