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 ;
36
+ import org .mybatis .dynamic .sql .select .join .OnJoinCriterion ;
35
37
import org .mybatis .dynamic .sql .select .join .JoinSpecification ;
36
38
import org .mybatis .dynamic .sql .select .join .JoinType ;
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,16 @@ 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 , AndJoinCriterion ...joinCriteria ) {
98
+ addJoinSpecificationBuilder (joinTable , joinCriterion , JoinType .INNER , joinCriteria );
99
+ return this ;
100
+ }
101
+
102
+ public QueryExpressionDSL <R > join (SqlTable joinTable , String tableAlias , OnJoinCriterion joinCriterion , AndJoinCriterion ...joinCriteria ) {
103
+ tableAliases .put (joinTable , tableAlias );
104
+ return join (joinTable , joinCriterion , joinCriteria );
105
+ }
106
+
98
107
public JoinSpecificationStarter leftJoin (SqlTable joinTable ) {
99
108
return new JoinSpecificationStarter (joinTable , JoinType .LEFT );
100
109
}
@@ -104,6 +113,16 @@ public JoinSpecificationStarter leftJoin(SqlTable joinTable, String tableAlias)
104
113
return leftJoin (joinTable );
105
114
}
106
115
116
+ public QueryExpressionDSL <R > leftJoin (SqlTable joinTable , OnJoinCriterion joinCriterion , AndJoinCriterion ...joinCriteria ) {
117
+ addJoinSpecificationBuilder (joinTable , joinCriterion , JoinType .LEFT , joinCriteria );
118
+ return this ;
119
+ }
120
+
121
+ public QueryExpressionDSL <R > leftJoin (SqlTable joinTable , String tableAlias , OnJoinCriterion joinCriterion , AndJoinCriterion ...joinCriteria ) {
122
+ tableAliases .put (joinTable , tableAlias );
123
+ return leftJoin (joinTable , joinCriterion , joinCriteria );
124
+ }
125
+
107
126
public JoinSpecificationStarter rightJoin (SqlTable joinTable ) {
108
127
return new JoinSpecificationStarter (joinTable , JoinType .RIGHT );
109
128
}
@@ -113,6 +132,16 @@ public JoinSpecificationStarter rightJoin(SqlTable joinTable, String tableAlias)
113
132
return rightJoin (joinTable );
114
133
}
115
134
135
+ public QueryExpressionDSL <R > rightJoin (SqlTable joinTable , OnJoinCriterion joinCriterion , AndJoinCriterion ...joinCriteria ) {
136
+ addJoinSpecificationBuilder (joinTable , joinCriterion , JoinType .RIGHT , joinCriteria );
137
+ return this ;
138
+ }
139
+
140
+ public QueryExpressionDSL <R > rightJoin (SqlTable joinTable , String tableAlias , OnJoinCriterion joinCriterion , AndJoinCriterion ...joinCriteria ) {
141
+ tableAliases .put (joinTable , tableAlias );
142
+ return rightJoin (joinTable , joinCriterion , joinCriteria );
143
+ }
144
+
116
145
public JoinSpecificationStarter fullJoin (SqlTable joinTable ) {
117
146
return new JoinSpecificationStarter (joinTable , JoinType .FULL );
118
147
}
@@ -122,13 +151,30 @@ public JoinSpecificationStarter fullJoin(SqlTable joinTable, String tableAlias)
122
151
return fullJoin (joinTable );
123
152
}
124
153
125
- @ Override
154
+ public QueryExpressionDSL <R > fullJoin (SqlTable joinTable , OnJoinCriterion joinCriterion , AndJoinCriterion ...joinCriteria ) {
155
+ addJoinSpecificationBuilder (joinTable , joinCriterion , JoinType .FULL , joinCriteria );
156
+ return this ;
157
+ }
158
+
159
+ public QueryExpressionDSL <R > fullJoin (SqlTable joinTable , String tableAlias , OnJoinCriterion joinCriterion , AndJoinCriterion ...joinCriteria ) {
160
+ tableAliases .put (joinTable , tableAlias );
161
+ return fullJoin (joinTable , joinCriterion , joinCriteria );
162
+ }
163
+
164
+ private void addJoinSpecificationBuilder (SqlTable joinTable , OnJoinCriterion joinCriterion , JoinType joinType ,
165
+ AndJoinCriterion ...joinCriteria ) {
166
+ joinSpecificationBuilders .add (new JoinSpecification .Builder ()
167
+ .withJoinTable (joinTable )
168
+ .withJoinType (joinType )
169
+ .withJoinCriterion (joinCriterion )
170
+ .withJoinCriteria (Arrays .asList (joinCriteria )));
171
+ }
172
+
126
173
public GroupByFinisher groupBy (BasicColumn ...columns ) {
127
174
groupByModel = GroupByModel .of (columns );
128
175
return new GroupByFinisher ();
129
176
}
130
177
131
- @ Override
132
178
public SelectDSL <R > orderBy (SortSpecification ...columns ) {
133
179
selectDSL .orderBy (columns );
134
180
return selectDSL ;
@@ -160,17 +206,14 @@ private JoinModel buildJoinModel() {
160
206
.collect (Collectors .toList ()));
161
207
}
162
208
163
- @ Override
164
209
public SelectDSL <R >.LimitFinisher limit (long limit ) {
165
210
return selectDSL .limit (limit );
166
211
}
167
212
168
- @ Override
169
213
public SelectDSL <R >.OffsetFirstFinisher offset (long offset ) {
170
214
return selectDSL .offset (offset );
171
215
}
172
216
173
- @ Override
174
217
public SelectDSL <R >.FetchFirstFinisher fetchFirst (long fetchFirstRows ) {
175
218
return selectDSL .fetchFirst (fetchFirstRows );
176
219
}
@@ -298,19 +341,19 @@ public JoinSpecificationFinisher on(BasicColumn joinColumn, JoinCondition joinCo
298
341
}
299
342
300
343
public JoinSpecificationFinisher on (BasicColumn joinColumn , JoinCondition joinCondition ,
301
- JoinCriterion ...joinCriteria ) {
344
+ AndJoinCriterion ...joinCriteria ) {
302
345
return new JoinSpecificationFinisher (joinTable , joinColumn , joinCondition , joinType , joinCriteria );
303
346
}
304
347
}
305
348
306
- public class JoinSpecificationFinisher implements CompletableQuery <R > {
349
+ public class JoinSpecificationFinisher implements Buildable <R > {
307
350
private JoinSpecification .Builder joinSpecificationBuilder ;
308
351
309
352
public JoinSpecificationFinisher (SqlTable table , BasicColumn joinColumn ,
310
353
JoinCondition joinCondition , JoinType joinType ) {
311
- JoinCriterion joinCriterion = JoinCriterion .withJoinColumn (joinColumn )
354
+ JoinCriterion joinCriterion = new OnJoinCriterion .Builder ()
355
+ .withJoinColumn (joinColumn )
312
356
.withJoinCondition (joinCondition )
313
- .withConnector ("on" ) //$NON-NLS-1$
314
357
.build ();
315
358
316
359
joinSpecificationBuilder = JoinSpecification .withJoinTable (table )
@@ -321,10 +364,10 @@ public JoinSpecificationFinisher(SqlTable table, BasicColumn joinColumn,
321
364
}
322
365
323
366
public JoinSpecificationFinisher (SqlTable table , BasicColumn joinColumn ,
324
- JoinCondition joinCondition , JoinType joinType , JoinCriterion ...joinCriteria ) {
325
- JoinCriterion joinCriterion = JoinCriterion .withJoinColumn (joinColumn )
367
+ JoinCondition joinCondition , JoinType joinType , AndJoinCriterion ...joinCriteria ) {
368
+ JoinCriterion joinCriterion = new OnJoinCriterion .Builder ()
369
+ .withJoinColumn (joinColumn )
326
370
.withJoinCondition (joinCondition )
327
- .withConnector ("on" ) //$NON-NLS-1$
328
371
.build ();
329
372
330
373
joinSpecificationBuilder = JoinSpecification .withJoinTable (table )
@@ -340,26 +383,23 @@ public R build() {
340
383
return QueryExpressionDSL .this .build ();
341
384
}
342
385
343
- @ Override
344
386
public QueryExpressionWhereBuilder where () {
345
387
return QueryExpressionDSL .this .where ();
346
388
}
347
389
348
- @ Override
349
390
public <T > QueryExpressionWhereBuilder where (BindableColumn <T > column , VisitableCondition <T > condition ) {
350
391
return QueryExpressionDSL .this .where (column , condition );
351
392
}
352
393
353
- @ Override
354
394
public <T > QueryExpressionWhereBuilder where (BindableColumn <T > column , VisitableCondition <T > condition ,
355
395
SqlCriterion <?>...subCriteria ) {
356
396
return QueryExpressionDSL .this .where (column , condition , subCriteria );
357
397
}
358
398
359
399
public JoinSpecificationFinisher and (BasicColumn joinColumn , JoinCondition joinCondition ) {
360
- JoinCriterion joinCriterion = JoinCriterion .withJoinColumn (joinColumn )
400
+ JoinCriterion joinCriterion = new AndJoinCriterion .Builder ()
401
+ .withJoinColumn (joinColumn )
361
402
.withJoinCondition (joinCondition )
362
- .withConnector ("and" ) //$NON-NLS-1$
363
403
.build ();
364
404
joinSpecificationBuilder .withJoinCriterion (joinCriterion );
365
405
return this ;
@@ -397,7 +437,6 @@ public JoinSpecificationStarter fullJoin(SqlTable joinTable, String tableAlias)
397
437
return QueryExpressionDSL .this .fullJoin (joinTable , tableAlias );
398
438
}
399
439
400
- @ Override
401
440
public GroupByFinisher groupBy (BasicColumn ...columns ) {
402
441
return QueryExpressionDSL .this .groupBy (columns );
403
442
}
@@ -410,22 +449,18 @@ public UnionBuilder unionAll() {
410
449
return QueryExpressionDSL .this .unionAll ();
411
450
}
412
451
413
- @ Override
414
452
public SelectDSL <R > orderBy (SortSpecification ...columns ) {
415
453
return QueryExpressionDSL .this .orderBy (columns );
416
454
}
417
455
418
- @ Override
419
456
public SelectDSL <R >.LimitFinisher limit (long limit ) {
420
457
return QueryExpressionDSL .this .limit (limit );
421
458
}
422
459
423
- @ Override
424
460
public SelectDSL <R >.OffsetFirstFinisher offset (long offset ) {
425
461
return QueryExpressionDSL .this .offset (offset );
426
462
}
427
463
428
- @ Override
429
464
public SelectDSL <R >.FetchFirstFinisher fetchFirst (long fetchFirstRows ) {
430
465
return QueryExpressionDSL .this .fetchFirst (fetchFirstRows );
431
466
}
0 commit comments