29
29
import org .mybatis .dynamic .sql .SqlCriterion ;
30
30
import org .mybatis .dynamic .sql .SqlTable ;
31
31
import org .mybatis .dynamic .sql .VisitableCondition ;
32
+ import org .mybatis .dynamic .sql .select .join .AndJoinCriterion ;
32
33
import org .mybatis .dynamic .sql .select .join .JoinCondition ;
33
34
import org .mybatis .dynamic .sql .select .join .JoinCriterion ;
34
35
import org .mybatis .dynamic .sql .select .join .JoinModel ;
35
36
import org .mybatis .dynamic .sql .select .join .JoinSpecification ;
36
37
import org .mybatis .dynamic .sql .select .join .JoinType ;
38
+ import org .mybatis .dynamic .sql .select .join .OnJoinCriterion ;
37
39
import org .mybatis .dynamic .sql .util .Buildable ;
38
40
import org .mybatis .dynamic .sql .where .AbstractWhereDSL ;
39
41
40
- public class QueryExpressionDSL <R > implements CompletableQuery <R > {
42
+ public class QueryExpressionDSL <R > implements Buildable <R > {
41
43
42
44
private String connector ;
43
45
private SelectDSL <R > selectDSL ;
@@ -62,19 +64,16 @@ public class QueryExpressionDSL<R> implements CompletableQuery<R> {
62
64
tableAliases .put (table , tableAlias );
63
65
}
64
66
65
- @ Override
66
67
public QueryExpressionWhereBuilder where () {
67
68
whereBuilder = new QueryExpressionWhereBuilder ();
68
69
return whereBuilder ;
69
70
}
70
71
71
- @ Override
72
72
public <T > QueryExpressionWhereBuilder where (BindableColumn <T > column , VisitableCondition <T > condition ) {
73
73
whereBuilder = new QueryExpressionWhereBuilder (column , condition );
74
74
return whereBuilder ;
75
75
}
76
76
77
- @ Override
78
77
public <T > QueryExpressionWhereBuilder where (BindableColumn <T > column , VisitableCondition <T > condition ,
79
78
SqlCriterion <?>...subCriteria ) {
80
79
whereBuilder = new QueryExpressionWhereBuilder (column , condition , subCriteria );
@@ -95,6 +94,18 @@ public JoinSpecificationStarter join(SqlTable joinTable, String tableAlias) {
95
94
return join (joinTable );
96
95
}
97
96
97
+ public QueryExpressionDSL <R > join (SqlTable joinTable , OnJoinCriterion joinCriterion ,
98
+ AndJoinCriterion ...joinCriteria ) {
99
+ addJoinSpecificationBuilder (joinTable , joinCriterion , JoinType .INNER , joinCriteria );
100
+ return this ;
101
+ }
102
+
103
+ public QueryExpressionDSL <R > join (SqlTable joinTable , String tableAlias , OnJoinCriterion joinCriterion ,
104
+ AndJoinCriterion ...joinCriteria ) {
105
+ tableAliases .put (joinTable , tableAlias );
106
+ return join (joinTable , joinCriterion , joinCriteria );
107
+ }
108
+
98
109
public JoinSpecificationStarter leftJoin (SqlTable joinTable ) {
99
110
return new JoinSpecificationStarter (joinTable , JoinType .LEFT );
100
111
}
@@ -104,6 +115,18 @@ public JoinSpecificationStarter leftJoin(SqlTable joinTable, String tableAlias)
104
115
return leftJoin (joinTable );
105
116
}
106
117
118
+ public QueryExpressionDSL <R > leftJoin (SqlTable joinTable , OnJoinCriterion joinCriterion ,
119
+ AndJoinCriterion ...joinCriteria ) {
120
+ addJoinSpecificationBuilder (joinTable , joinCriterion , JoinType .LEFT , joinCriteria );
121
+ return this ;
122
+ }
123
+
124
+ public QueryExpressionDSL <R > leftJoin (SqlTable joinTable , String tableAlias , OnJoinCriterion joinCriterion ,
125
+ AndJoinCriterion ...joinCriteria ) {
126
+ tableAliases .put (joinTable , tableAlias );
127
+ return leftJoin (joinTable , joinCriterion , joinCriteria );
128
+ }
129
+
107
130
public JoinSpecificationStarter rightJoin (SqlTable joinTable ) {
108
131
return new JoinSpecificationStarter (joinTable , JoinType .RIGHT );
109
132
}
@@ -113,6 +136,18 @@ public JoinSpecificationStarter rightJoin(SqlTable joinTable, String tableAlias)
113
136
return rightJoin (joinTable );
114
137
}
115
138
139
+ public QueryExpressionDSL <R > rightJoin (SqlTable joinTable , OnJoinCriterion joinCriterion ,
140
+ AndJoinCriterion ...joinCriteria ) {
141
+ addJoinSpecificationBuilder (joinTable , joinCriterion , JoinType .RIGHT , joinCriteria );
142
+ return this ;
143
+ }
144
+
145
+ public QueryExpressionDSL <R > rightJoin (SqlTable joinTable , String tableAlias , OnJoinCriterion joinCriterion ,
146
+ AndJoinCriterion ...joinCriteria ) {
147
+ tableAliases .put (joinTable , tableAlias );
148
+ return rightJoin (joinTable , joinCriterion , joinCriteria );
149
+ }
150
+
116
151
public JoinSpecificationStarter fullJoin (SqlTable joinTable ) {
117
152
return new JoinSpecificationStarter (joinTable , JoinType .FULL );
118
153
}
@@ -122,13 +157,32 @@ public JoinSpecificationStarter fullJoin(SqlTable joinTable, String tableAlias)
122
157
return fullJoin (joinTable );
123
158
}
124
159
125
- @ Override
160
+ public QueryExpressionDSL <R > fullJoin (SqlTable joinTable , OnJoinCriterion joinCriterion ,
161
+ AndJoinCriterion ...joinCriteria ) {
162
+ addJoinSpecificationBuilder (joinTable , joinCriterion , JoinType .FULL , joinCriteria );
163
+ return this ;
164
+ }
165
+
166
+ public QueryExpressionDSL <R > fullJoin (SqlTable joinTable , String tableAlias , OnJoinCriterion joinCriterion ,
167
+ AndJoinCriterion ...joinCriteria ) {
168
+ tableAliases .put (joinTable , tableAlias );
169
+ return fullJoin (joinTable , joinCriterion , joinCriteria );
170
+ }
171
+
172
+ private void addJoinSpecificationBuilder (SqlTable joinTable , OnJoinCriterion joinCriterion , JoinType joinType ,
173
+ AndJoinCriterion ...joinCriteria ) {
174
+ joinSpecificationBuilders .add (new JoinSpecification .Builder ()
175
+ .withJoinTable (joinTable )
176
+ .withJoinType (joinType )
177
+ .withJoinCriterion (joinCriterion )
178
+ .withJoinCriteria (Arrays .asList (joinCriteria )));
179
+ }
180
+
126
181
public GroupByFinisher groupBy (BasicColumn ...columns ) {
127
182
groupByModel = GroupByModel .of (columns );
128
183
return new GroupByFinisher ();
129
184
}
130
185
131
- @ Override
132
186
public SelectDSL <R > orderBy (SortSpecification ...columns ) {
133
187
selectDSL .orderBy (columns );
134
188
return selectDSL ;
@@ -160,17 +214,14 @@ private JoinModel buildJoinModel() {
160
214
.collect (Collectors .toList ()));
161
215
}
162
216
163
- @ Override
164
217
public SelectDSL <R >.LimitFinisher limit (long limit ) {
165
218
return selectDSL .limit (limit );
166
219
}
167
220
168
- @ Override
169
221
public SelectDSL <R >.OffsetFirstFinisher offset (long offset ) {
170
222
return selectDSL .offset (offset );
171
223
}
172
224
173
- @ Override
174
225
public SelectDSL <R >.FetchFirstFinisher fetchFirst (long fetchFirstRows ) {
175
226
return selectDSL .fetchFirst (fetchFirstRows );
176
227
}
@@ -298,19 +349,19 @@ public JoinSpecificationFinisher on(BasicColumn joinColumn, JoinCondition joinCo
298
349
}
299
350
300
351
public JoinSpecificationFinisher on (BasicColumn joinColumn , JoinCondition joinCondition ,
301
- JoinCriterion ...joinCriteria ) {
352
+ AndJoinCriterion ...joinCriteria ) {
302
353
return new JoinSpecificationFinisher (joinTable , joinColumn , joinCondition , joinType , joinCriteria );
303
354
}
304
355
}
305
356
306
- public class JoinSpecificationFinisher implements CompletableQuery <R > {
357
+ public class JoinSpecificationFinisher implements Buildable <R > {
307
358
private JoinSpecification .Builder joinSpecificationBuilder ;
308
359
309
360
public JoinSpecificationFinisher (SqlTable table , BasicColumn joinColumn ,
310
361
JoinCondition joinCondition , JoinType joinType ) {
311
- JoinCriterion joinCriterion = JoinCriterion .withJoinColumn (joinColumn )
362
+ JoinCriterion joinCriterion = new OnJoinCriterion .Builder ()
363
+ .withJoinColumn (joinColumn )
312
364
.withJoinCondition (joinCondition )
313
- .withConnector ("on" ) //$NON-NLS-1$
314
365
.build ();
315
366
316
367
joinSpecificationBuilder = JoinSpecification .withJoinTable (table )
@@ -321,10 +372,10 @@ public JoinSpecificationFinisher(SqlTable table, BasicColumn joinColumn,
321
372
}
322
373
323
374
public JoinSpecificationFinisher (SqlTable table , BasicColumn joinColumn ,
324
- JoinCondition joinCondition , JoinType joinType , JoinCriterion ...joinCriteria ) {
325
- JoinCriterion joinCriterion = JoinCriterion .withJoinColumn (joinColumn )
375
+ JoinCondition joinCondition , JoinType joinType , AndJoinCriterion ...joinCriteria ) {
376
+ JoinCriterion joinCriterion = new OnJoinCriterion .Builder ()
377
+ .withJoinColumn (joinColumn )
326
378
.withJoinCondition (joinCondition )
327
- .withConnector ("on" ) //$NON-NLS-1$
328
379
.build ();
329
380
330
381
joinSpecificationBuilder = JoinSpecification .withJoinTable (table )
@@ -340,26 +391,23 @@ public R build() {
340
391
return QueryExpressionDSL .this .build ();
341
392
}
342
393
343
- @ Override
344
394
public QueryExpressionWhereBuilder where () {
345
395
return QueryExpressionDSL .this .where ();
346
396
}
347
397
348
- @ Override
349
398
public <T > QueryExpressionWhereBuilder where (BindableColumn <T > column , VisitableCondition <T > condition ) {
350
399
return QueryExpressionDSL .this .where (column , condition );
351
400
}
352
401
353
- @ Override
354
402
public <T > QueryExpressionWhereBuilder where (BindableColumn <T > column , VisitableCondition <T > condition ,
355
403
SqlCriterion <?>...subCriteria ) {
356
404
return QueryExpressionDSL .this .where (column , condition , subCriteria );
357
405
}
358
406
359
407
public JoinSpecificationFinisher and (BasicColumn joinColumn , JoinCondition joinCondition ) {
360
- JoinCriterion joinCriterion = JoinCriterion .withJoinColumn (joinColumn )
408
+ JoinCriterion joinCriterion = new AndJoinCriterion .Builder ()
409
+ .withJoinColumn (joinColumn )
361
410
.withJoinCondition (joinCondition )
362
- .withConnector ("and" ) //$NON-NLS-1$
363
411
.build ();
364
412
joinSpecificationBuilder .withJoinCriterion (joinCriterion );
365
413
return this ;
@@ -397,7 +445,6 @@ public JoinSpecificationStarter fullJoin(SqlTable joinTable, String tableAlias)
397
445
return QueryExpressionDSL .this .fullJoin (joinTable , tableAlias );
398
446
}
399
447
400
- @ Override
401
448
public GroupByFinisher groupBy (BasicColumn ...columns ) {
402
449
return QueryExpressionDSL .this .groupBy (columns );
403
450
}
@@ -410,22 +457,18 @@ public UnionBuilder unionAll() {
410
457
return QueryExpressionDSL .this .unionAll ();
411
458
}
412
459
413
- @ Override
414
460
public SelectDSL <R > orderBy (SortSpecification ...columns ) {
415
461
return QueryExpressionDSL .this .orderBy (columns );
416
462
}
417
463
418
- @ Override
419
464
public SelectDSL <R >.LimitFinisher limit (long limit ) {
420
465
return QueryExpressionDSL .this .limit (limit );
421
466
}
422
467
423
- @ Override
424
468
public SelectDSL <R >.OffsetFirstFinisher offset (long offset ) {
425
469
return QueryExpressionDSL .this .offset (offset );
426
470
}
427
471
428
- @ Override
429
472
public SelectDSL <R >.FetchFirstFinisher fetchFirst (long fetchFirstRows ) {
430
473
return QueryExpressionDSL .this .fetchFirst (fetchFirstRows );
431
474
}
0 commit comments