1
+ /**
2
+ * Copyright 2016-2019 the original author or authors.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
1
16
package issues .gh100 ;
2
17
3
18
import static org .assertj .core .api .Assertions .assertThat ;
4
- import static org .junit .jupiter .api .Assertions .assertAll ;
5
19
import static org .mybatis .dynamic .sql .SqlBuilder .*;
6
20
7
21
import org .junit .jupiter .api .Test ;
@@ -61,7 +75,7 @@ public void testFromJoinB1() {
61
75
QueryExpressionDSL <SelectModel > builder1 = select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
62
76
.from (StudentDynamicSqlSupport .student );
63
77
64
- QueryExpressionDSL < SelectModel >. JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
78
+ builder1 .join (StudentRegDynamicSqlSupport .studentReg )
65
79
.on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
66
80
67
81
String expected = "select student.id, student.name, student.idcard"
@@ -98,7 +112,7 @@ public void testfromJoinWhereB1() {
98
112
QueryExpressionDSL <SelectModel >.JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
99
113
.on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
100
114
101
- QueryExpressionDSL < SelectModel >. QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
115
+ builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
102
116
103
117
String expected = "select student.id, student.name, student.idcard"
104
118
+ " from student"
@@ -118,7 +132,7 @@ public void testfromJoinWhereB2() {
118
132
QueryExpressionDSL <SelectModel >.JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
119
133
.on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
120
134
121
- QueryExpressionDSL < SelectModel >. QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
135
+ builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
122
136
123
137
String expected = "select student.id, student.name, student.idcard"
124
138
+ " from student"
@@ -160,7 +174,7 @@ public void testFromJoinWhereUnionB1() {
160
174
161
175
QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
162
176
163
- QueryExpressionDSL < SelectModel > builder4 = builder3 .union ()
177
+ builder3 .union ()
164
178
.select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
165
179
.from (StudentDynamicSqlSupport .student );
166
180
@@ -187,7 +201,7 @@ public void testFromJoinWhereUnionB2() {
187
201
188
202
QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
189
203
190
- QueryExpressionDSL < SelectModel > builder4 = builder3 .union ()
204
+ builder3 .union ()
191
205
.select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
192
206
.from (StudentDynamicSqlSupport .student );
193
207
@@ -214,7 +228,7 @@ public void testFromJoinWhereUnionB3() {
214
228
215
229
QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
216
230
217
- QueryExpressionDSL < SelectModel > builder4 = builder3 .union ()
231
+ builder3 .union ()
218
232
.select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
219
233
.from (StudentDynamicSqlSupport .student );
220
234
@@ -258,6 +272,196 @@ public void testFromJoinWhereUnionB4() {
258
272
assertThat (selectStatement .getSelectStatement ()).isEqualTo (expected );
259
273
}
260
274
275
+ @ Test
276
+ public void testFromJoinWhereUnionUnionB1 () {
277
+ QueryExpressionDSL <SelectModel > builder1 = select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
278
+ .from (StudentDynamicSqlSupport .student );
279
+
280
+ QueryExpressionDSL <SelectModel >.JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
281
+ .on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
282
+
283
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
284
+
285
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder4 = builder3 .union ()
286
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
287
+ .from (StudentDynamicSqlSupport .student )
288
+ .where (StudentDynamicSqlSupport .id , isNotNull ());
289
+
290
+ builder4 .union ()
291
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
292
+ .from (StudentDynamicSqlSupport .student )
293
+ .where (StudentDynamicSqlSupport .id , isNull ());
294
+
295
+ String expected = "select student.id, student.name, student.idcard"
296
+ + " from student"
297
+ + " join student_reg on student.id = student_reg.studentId"
298
+ + " where student.idcard = #{parameters.p1}"
299
+ + " union"
300
+ + " select id, name, idcard"
301
+ + " from student"
302
+ + " where id is not null"
303
+ + " union"
304
+ + " select id, name, idcard"
305
+ + " from student"
306
+ + " where id is null" ;
307
+
308
+ SelectStatementProvider selectStatement = builder1 .build ().render (RenderingStrategy .MYBATIS3 );
309
+
310
+ assertThat (selectStatement .getSelectStatement ()).isEqualTo (expected );
311
+ }
312
+
313
+ @ Test
314
+ public void testFromJoinWhereUnionUnionB2 () {
315
+ QueryExpressionDSL <SelectModel > builder1 = select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
316
+ .from (StudentDynamicSqlSupport .student );
317
+
318
+ QueryExpressionDSL <SelectModel >.JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
319
+ .on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
320
+
321
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
322
+
323
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder4 = builder3 .union ()
324
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
325
+ .from (StudentDynamicSqlSupport .student )
326
+ .where (StudentDynamicSqlSupport .id , isNotNull ());
327
+
328
+ builder4 .union ()
329
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
330
+ .from (StudentDynamicSqlSupport .student )
331
+ .where (StudentDynamicSqlSupport .id , isNull ());
332
+
333
+ String expected = "select student.id, student.name, student.idcard"
334
+ + " from student"
335
+ + " join student_reg on student.id = student_reg.studentId"
336
+ + " where student.idcard = #{parameters.p1}"
337
+ + " union"
338
+ + " select id, name, idcard"
339
+ + " from student"
340
+ + " where id is not null"
341
+ + " union"
342
+ + " select id, name, idcard"
343
+ + " from student"
344
+ + " where id is null" ;
345
+
346
+ SelectStatementProvider selectStatement = builder2 .build ().render (RenderingStrategy .MYBATIS3 );
347
+
348
+ assertThat (selectStatement .getSelectStatement ()).isEqualTo (expected );
349
+ }
350
+
351
+ @ Test
352
+ public void testFromJoinWhereUnionUnionB3 () {
353
+ QueryExpressionDSL <SelectModel > builder1 = select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
354
+ .from (StudentDynamicSqlSupport .student );
355
+
356
+ QueryExpressionDSL <SelectModel >.JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
357
+ .on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
358
+
359
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
360
+
361
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder4 = builder3 .union ()
362
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
363
+ .from (StudentDynamicSqlSupport .student )
364
+ .where (StudentDynamicSqlSupport .id , isNotNull ());
365
+
366
+ builder4 .union ()
367
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
368
+ .from (StudentDynamicSqlSupport .student )
369
+ .where (StudentDynamicSqlSupport .id , isNull ());
370
+
371
+ String expected = "select student.id, student.name, student.idcard"
372
+ + " from student"
373
+ + " join student_reg on student.id = student_reg.studentId"
374
+ + " where student.idcard = #{parameters.p1}"
375
+ + " union"
376
+ + " select id, name, idcard"
377
+ + " from student"
378
+ + " where id is not null"
379
+ + " union"
380
+ + " select id, name, idcard"
381
+ + " from student"
382
+ + " where id is null" ;
383
+
384
+ SelectStatementProvider selectStatement = builder3 .build ().render (RenderingStrategy .MYBATIS3 );
385
+
386
+ assertThat (selectStatement .getSelectStatement ()).isEqualTo (expected );
387
+ }
388
+
389
+ @ Test
390
+ public void testFromJoinWhereUnionUnionB4 () {
391
+ QueryExpressionDSL <SelectModel > builder1 = select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
392
+ .from (StudentDynamicSqlSupport .student );
393
+
394
+ QueryExpressionDSL <SelectModel >.JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
395
+ .on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
396
+
397
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
398
+
399
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder4 = builder3 .union ()
400
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
401
+ .from (StudentDynamicSqlSupport .student )
402
+ .where (StudentDynamicSqlSupport .id , isNotNull ());
403
+
404
+ builder4 .union ()
405
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
406
+ .from (StudentDynamicSqlSupport .student )
407
+ .where (StudentDynamicSqlSupport .id , isNull ());
408
+
409
+ String expected = "select student.id, student.name, student.idcard"
410
+ + " from student"
411
+ + " join student_reg on student.id = student_reg.studentId"
412
+ + " where student.idcard = #{parameters.p1}"
413
+ + " union"
414
+ + " select id, name, idcard"
415
+ + " from student"
416
+ + " where id is not null"
417
+ + " union"
418
+ + " select id, name, idcard"
419
+ + " from student"
420
+ + " where id is null" ;
421
+
422
+ SelectStatementProvider selectStatement = builder4 .build ().render (RenderingStrategy .MYBATIS3 );
423
+
424
+ assertThat (selectStatement .getSelectStatement ()).isEqualTo (expected );
425
+ }
426
+
427
+ @ Test
428
+ public void testFromJoinWhereUnionUnionB5 () {
429
+ QueryExpressionDSL <SelectModel > builder1 = select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
430
+ .from (StudentDynamicSqlSupport .student );
431
+
432
+ QueryExpressionDSL <SelectModel >.JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
433
+ .on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
434
+
435
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
436
+
437
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder4 = builder3 .union ()
438
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
439
+ .from (StudentDynamicSqlSupport .student )
440
+ .where (StudentDynamicSqlSupport .id , isNotNull ());
441
+
442
+ QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder5 = builder4 .union ()
443
+ .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
444
+ .from (StudentDynamicSqlSupport .student )
445
+ .where (StudentDynamicSqlSupport .id , isNull ());
446
+
447
+ String expected = "select student.id, student.name, student.idcard"
448
+ + " from student"
449
+ + " join student_reg on student.id = student_reg.studentId"
450
+ + " where student.idcard = #{parameters.p1}"
451
+ + " union"
452
+ + " select id, name, idcard"
453
+ + " from student"
454
+ + " where id is not null"
455
+ + " union"
456
+ + " select id, name, idcard"
457
+ + " from student"
458
+ + " where id is null" ;
459
+
460
+ SelectStatementProvider selectStatement = builder5 .build ().render (RenderingStrategy .MYBATIS3 );
461
+
462
+ assertThat (selectStatement .getSelectStatement ()).isEqualTo (expected );
463
+ }
464
+
261
465
@ Test
262
466
public void testFromJoinWhereUnionOrderByB1 () {
263
467
QueryExpressionDSL <SelectModel > builder1 = select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
@@ -272,7 +476,7 @@ public void testFromJoinWhereUnionOrderByB1() {
272
476
.select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
273
477
.from (StudentDynamicSqlSupport .student );
274
478
275
- SelectDSL < SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
479
+ builder4 .orderBy (StudentDynamicSqlSupport .id );
276
480
277
481
String expected = "select student.id, student.name, student.idcard"
278
482
+ " from student"
@@ -302,7 +506,7 @@ public void testFromJoinWhereUnionOrderByB2() {
302
506
.select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
303
507
.from (StudentDynamicSqlSupport .student );
304
508
305
- SelectDSL < SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
509
+ builder4 .orderBy (StudentDynamicSqlSupport .id );
306
510
307
511
String expected = "select student.id, student.name, student.idcard"
308
512
+ " from student"
@@ -332,7 +536,7 @@ public void testFromJoinWhereUnionOrderByB3() {
332
536
.select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
333
537
.from (StudentDynamicSqlSupport .student );
334
538
335
- SelectDSL < SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
539
+ builder4 .orderBy (StudentDynamicSqlSupport .id );
336
540
337
541
String expected = "select student.id, student.name, student.idcard"
338
542
+ " from student"
@@ -362,7 +566,7 @@ public void testFromJoinWhereUnionOrderByB4() {
362
566
.select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
363
567
.from (StudentDynamicSqlSupport .student );
364
568
365
- SelectDSL < SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
569
+ builder4 .orderBy (StudentDynamicSqlSupport .id );
366
570
367
571
String expected = "select student.id, student.name, student.idcard"
368
572
+ " from student"
@@ -424,7 +628,7 @@ public void testFromJoinWhereUnionOrderByLimitB1() {
424
628
425
629
SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
426
630
427
- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
631
+ builder5 .limit (3 );
428
632
429
633
String expected = "select student.id, student.name, student.idcard"
430
634
+ " from student"
@@ -457,7 +661,7 @@ public void testFromJoinWhereUnionOrderByLimitB2() {
457
661
458
662
SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
459
663
460
- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
664
+ builder5 .limit (3 );
461
665
462
666
String expected = "select student.id, student.name, student.idcard"
463
667
+ " from student"
@@ -490,7 +694,7 @@ public void testFromJoinWhereUnionOrderByLimitB3() {
490
694
491
695
SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
492
696
493
- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
697
+ builder5 .limit (3 );
494
698
495
699
String expected = "select student.id, student.name, student.idcard"
496
700
+ " from student"
@@ -523,7 +727,7 @@ public void testFromJoinWhereUnionOrderByLimitB4() {
523
727
524
728
SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
525
729
526
- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
730
+ builder5 .limit (3 );
527
731
528
732
String expected = "select student.id, student.name, student.idcard"
529
733
+ " from student"
@@ -556,7 +760,7 @@ public void testFromJoinWhereUnionOrderByLimitB5() {
556
760
557
761
SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
558
762
559
- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
763
+ builder5 .limit (3 );
560
764
561
765
String expected = "select student.id, student.name, student.idcard"
562
766
+ " from student"
0 commit comments