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+ */
116package issues .gh100 ;
217
318import static org .assertj .core .api .Assertions .assertThat ;
4- import static org .junit .jupiter .api .Assertions .assertAll ;
519import static org .mybatis .dynamic .sql .SqlBuilder .*;
620
721import org .junit .jupiter .api .Test ;
@@ -61,7 +75,7 @@ public void testFromJoinB1() {
6175 QueryExpressionDSL <SelectModel > builder1 = select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
6276 .from (StudentDynamicSqlSupport .student );
6377
64- QueryExpressionDSL < SelectModel >. JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
78+ builder1 .join (StudentRegDynamicSqlSupport .studentReg )
6579 .on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
6680
6781 String expected = "select student.id, student.name, student.idcard"
@@ -98,7 +112,7 @@ public void testfromJoinWhereB1() {
98112 QueryExpressionDSL <SelectModel >.JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
99113 .on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
100114
101- QueryExpressionDSL < SelectModel >. QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
115+ builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
102116
103117 String expected = "select student.id, student.name, student.idcard"
104118 + " from student"
@@ -118,7 +132,7 @@ public void testfromJoinWhereB2() {
118132 QueryExpressionDSL <SelectModel >.JoinSpecificationFinisher builder2 = builder1 .join (StudentRegDynamicSqlSupport .studentReg )
119133 .on (StudentDynamicSqlSupport .id , equalTo (StudentRegDynamicSqlSupport .studentid ));
120134
121- QueryExpressionDSL < SelectModel >. QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
135+ builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
122136
123137 String expected = "select student.id, student.name, student.idcard"
124138 + " from student"
@@ -160,7 +174,7 @@ public void testFromJoinWhereUnionB1() {
160174
161175 QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
162176
163- QueryExpressionDSL < SelectModel > builder4 = builder3 .union ()
177+ builder3 .union ()
164178 .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
165179 .from (StudentDynamicSqlSupport .student );
166180
@@ -187,7 +201,7 @@ public void testFromJoinWhereUnionB2() {
187201
188202 QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
189203
190- QueryExpressionDSL < SelectModel > builder4 = builder3 .union ()
204+ builder3 .union ()
191205 .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
192206 .from (StudentDynamicSqlSupport .student );
193207
@@ -214,7 +228,7 @@ public void testFromJoinWhereUnionB3() {
214228
215229 QueryExpressionDSL <SelectModel >.QueryExpressionWhereBuilder builder3 = builder2 .where (StudentDynamicSqlSupport .idcard , isEqualTo ("fred" ));
216230
217- QueryExpressionDSL < SelectModel > builder4 = builder3 .union ()
231+ builder3 .union ()
218232 .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
219233 .from (StudentDynamicSqlSupport .student );
220234
@@ -258,6 +272,196 @@ public void testFromJoinWhereUnionB4() {
258272 assertThat (selectStatement .getSelectStatement ()).isEqualTo (expected );
259273 }
260274
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+
261465 @ Test
262466 public void testFromJoinWhereUnionOrderByB1 () {
263467 QueryExpressionDSL <SelectModel > builder1 = select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
@@ -272,7 +476,7 @@ public void testFromJoinWhereUnionOrderByB1() {
272476 .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
273477 .from (StudentDynamicSqlSupport .student );
274478
275- SelectDSL < SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
479+ builder4 .orderBy (StudentDynamicSqlSupport .id );
276480
277481 String expected = "select student.id, student.name, student.idcard"
278482 + " from student"
@@ -302,7 +506,7 @@ public void testFromJoinWhereUnionOrderByB2() {
302506 .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
303507 .from (StudentDynamicSqlSupport .student );
304508
305- SelectDSL < SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
509+ builder4 .orderBy (StudentDynamicSqlSupport .id );
306510
307511 String expected = "select student.id, student.name, student.idcard"
308512 + " from student"
@@ -332,7 +536,7 @@ public void testFromJoinWhereUnionOrderByB3() {
332536 .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
333537 .from (StudentDynamicSqlSupport .student );
334538
335- SelectDSL < SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
539+ builder4 .orderBy (StudentDynamicSqlSupport .id );
336540
337541 String expected = "select student.id, student.name, student.idcard"
338542 + " from student"
@@ -362,7 +566,7 @@ public void testFromJoinWhereUnionOrderByB4() {
362566 .select (StudentDynamicSqlSupport .id , StudentDynamicSqlSupport .name , StudentDynamicSqlSupport .idcard )
363567 .from (StudentDynamicSqlSupport .student );
364568
365- SelectDSL < SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
569+ builder4 .orderBy (StudentDynamicSqlSupport .id );
366570
367571 String expected = "select student.id, student.name, student.idcard"
368572 + " from student"
@@ -424,7 +628,7 @@ public void testFromJoinWhereUnionOrderByLimitB1() {
424628
425629 SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
426630
427- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
631+ builder5 .limit (3 );
428632
429633 String expected = "select student.id, student.name, student.idcard"
430634 + " from student"
@@ -457,7 +661,7 @@ public void testFromJoinWhereUnionOrderByLimitB2() {
457661
458662 SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
459663
460- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
664+ builder5 .limit (3 );
461665
462666 String expected = "select student.id, student.name, student.idcard"
463667 + " from student"
@@ -490,7 +694,7 @@ public void testFromJoinWhereUnionOrderByLimitB3() {
490694
491695 SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
492696
493- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
697+ builder5 .limit (3 );
494698
495699 String expected = "select student.id, student.name, student.idcard"
496700 + " from student"
@@ -523,7 +727,7 @@ public void testFromJoinWhereUnionOrderByLimitB4() {
523727
524728 SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
525729
526- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
730+ builder5 .limit (3 );
527731
528732 String expected = "select student.id, student.name, student.idcard"
529733 + " from student"
@@ -556,7 +760,7 @@ public void testFromJoinWhereUnionOrderByLimitB5() {
556760
557761 SelectDSL <SelectModel > builder5 = builder4 .orderBy (StudentDynamicSqlSupport .id );
558762
559- SelectDSL < SelectModel >. LimitFinisher builder6 = builder5 .limit (3 );
763+ builder5 .limit (3 );
560764
561765 String expected = "select student.id, student.name, student.idcard"
562766 + " from student"
0 commit comments