37
37
import org .mybatis .dynamic .sql .where .AbstractWhereDSL ;
38
38
import org .mybatis .dynamic .sql .where .WhereModel ;
39
39
40
- public class QueryExpressionDSL {
40
+ public class QueryExpressionDSL < R > {
41
41
42
42
private String connector ;
43
- private SelectDSL selectModelBuilder ;
43
+ private SelectDSL < R > selectModelBuilder ;
44
44
private boolean isDistinct ;
45
45
private List <BasicColumn > selectList ;
46
46
private SqlTable table ;
@@ -50,7 +50,7 @@ public class QueryExpressionDSL {
50
50
private JoinModel joinModel ;
51
51
private List <JoinSpecification > joinSpecifications = new ArrayList <>();
52
52
53
- private QueryExpressionDSL (Builder builder ) {
53
+ private QueryExpressionDSL (Builder < R > builder ) {
54
54
connector = builder .connector ;
55
55
selectList = Arrays .asList (builder .selectList );
56
56
isDistinct = builder .isDistinct ;
@@ -68,34 +68,34 @@ public QueryExpressionAfterFrom from(SqlTable table, String tableAlias) {
68
68
return new QueryExpressionAfterFrom ();
69
69
}
70
70
71
- public static class Builder {
71
+ public static class Builder < R > {
72
72
private String connector ;
73
73
private BasicColumn [] selectList ;
74
74
private boolean isDistinct ;
75
- private SelectDSL selectModelBuilder ;
75
+ private SelectDSL < R > selectModelBuilder ;
76
76
77
- public Builder withConnector (String connector ) {
77
+ public Builder < R > withConnector (String connector ) {
78
78
this .connector = connector ;
79
79
return this ;
80
80
}
81
81
82
- public Builder withSelectList (BasicColumn ...selectList ) {
82
+ public Builder < R > withSelectList (BasicColumn ...selectList ) {
83
83
this .selectList = selectList ;
84
84
return this ;
85
85
}
86
86
87
- public Builder isDistinct () {
87
+ public Builder < R > isDistinct () {
88
88
this .isDistinct = true ;
89
89
return this ;
90
90
}
91
91
92
- public Builder withSelectModelBuilder (SelectDSL selectModelBuilder ) {
92
+ public Builder < R > withSelectModelBuilder (SelectDSL < R > selectModelBuilder ) {
93
93
this .selectModelBuilder = selectModelBuilder ;
94
94
return this ;
95
95
}
96
96
97
- public QueryExpressionDSL build () {
98
- return new QueryExpressionDSL (this );
97
+ public QueryExpressionDSL < R > build () {
98
+ return new QueryExpressionDSL <> (this );
99
99
}
100
100
}
101
101
@@ -112,7 +112,7 @@ protected QueryExpressionModel buildModel() {
112
112
.build ();
113
113
}
114
114
115
- public class QueryExpressionAfterFrom implements Buildable <SelectModel > {
115
+ public class QueryExpressionAfterFrom implements Buildable <R > {
116
116
private QueryExpressionAfterFrom () {
117
117
super ();
118
118
}
@@ -127,7 +127,7 @@ public <T> QueryExpressionWhereBuilder where(BindableColumn<T> column, Visitable
127
127
}
128
128
129
129
@ Override
130
- public SelectModel build () {
130
+ public R build () {
131
131
selectModelBuilder .addQueryExpression (buildModel ());
132
132
return selectModelBuilder .build ();
133
133
}
@@ -174,7 +174,7 @@ public GroupByFinisher groupBy(BasicColumn...columns) {
174
174
return new GroupByFinisher ();
175
175
}
176
176
177
- public SelectDSL orderBy (SortSpecification ...columns ) {
177
+ public SelectDSL < R > orderBy (SortSpecification ...columns ) {
178
178
selectModelBuilder .addQueryExpression (buildModel ());
179
179
selectModelBuilder .setOrderByModel (OrderByModel .of (columns ));
180
180
return selectModelBuilder ;
@@ -187,7 +187,7 @@ public UnionBuilder union() {
187
187
}
188
188
189
189
public class QueryExpressionWhereBuilder extends AbstractWhereDSL <QueryExpressionWhereBuilder >
190
- implements Buildable <SelectModel > {
190
+ implements Buildable <R > {
191
191
private <T > QueryExpressionWhereBuilder (BindableColumn <T > column , VisitableCondition <T > condition ) {
192
192
super (column , condition );
193
193
}
@@ -203,15 +203,15 @@ public UnionBuilder union() {
203
203
return new UnionBuilder ();
204
204
}
205
205
206
- public SelectDSL orderBy (SortSpecification ...columns ) {
206
+ public SelectDSL < R > orderBy (SortSpecification ...columns ) {
207
207
whereModel = buildWhereModel ();
208
208
selectModelBuilder .addQueryExpression (buildModel ());
209
209
selectModelBuilder .setOrderByModel (OrderByModel .of (columns ));
210
210
return selectModelBuilder ;
211
211
}
212
212
213
213
@ Override
214
- public SelectModel build () {
214
+ public R build () {
215
215
whereModel = buildWhereModel ();
216
216
selectModelBuilder .addQueryExpression (buildModel ());
217
217
return selectModelBuilder .build ();
@@ -242,7 +242,7 @@ public JoinSpecificationFinisher on(BasicColumn joinColumn, JoinCondition joinCo
242
242
}
243
243
}
244
244
245
- public class JoinSpecificationFinisher implements Buildable <SelectModel > {
245
+ public class JoinSpecificationFinisher implements Buildable <R > {
246
246
247
247
private SqlTable joinTable ;
248
248
private List <JoinCriterion > joinCriteria = new ArrayList <>();
@@ -291,7 +291,7 @@ protected JoinModel buildJoinModel() {
291
291
}
292
292
293
293
@ Override
294
- public SelectModel build () {
294
+ public R build () {
295
295
joinModel = buildJoinModel ();
296
296
selectModelBuilder .addQueryExpression (buildModel ());
297
297
return selectModelBuilder .build ();
@@ -358,37 +358,37 @@ public JoinSpecificationStarter fullJoin(SqlTable joinTable, String tableAlias)
358
358
return fullJoin (joinTable );
359
359
}
360
360
361
- public SelectDSL orderBy (SortSpecification ...columns ) {
361
+ public SelectDSL < R > orderBy (SortSpecification ...columns ) {
362
362
joinModel = buildJoinModel ();
363
363
selectModelBuilder .addQueryExpression (buildModel ());
364
364
selectModelBuilder .setOrderByModel (OrderByModel .of (columns ));
365
365
return selectModelBuilder ;
366
366
}
367
367
}
368
368
369
- public class GroupByFinisher implements Buildable <SelectModel > {
370
- public SelectDSL orderBy (SortSpecification ...columns ) {
369
+ public class GroupByFinisher implements Buildable <R > {
370
+ public SelectDSL < R > orderBy (SortSpecification ...columns ) {
371
371
selectModelBuilder .setOrderByModel (OrderByModel .of (columns ));
372
372
return selectModelBuilder ;
373
373
}
374
374
375
375
@ Override
376
- public SelectModel build () {
376
+ public R build () {
377
377
return selectModelBuilder .build ();
378
378
}
379
379
}
380
380
381
381
public class UnionBuilder {
382
- public QueryExpressionDSL select (BasicColumn ...selectList ) {
383
- return new QueryExpressionDSL .Builder ()
382
+ public QueryExpressionDSL < R > select (BasicColumn ...selectList ) {
383
+ return new QueryExpressionDSL .Builder < R > ()
384
384
.withConnector ("union" ) //$NON-NLS-1$
385
385
.withSelectList (selectList )
386
386
.withSelectModelBuilder (selectModelBuilder )
387
387
.build ();
388
388
}
389
389
390
- public QueryExpressionDSL selectDistinct (BasicColumn ...selectList ) {
391
- return new QueryExpressionDSL .Builder ()
390
+ public QueryExpressionDSL < R > selectDistinct (BasicColumn ...selectList ) {
391
+ return new QueryExpressionDSL .Builder < R > ()
392
392
.withConnector ("union" ) //$NON-NLS-1$
393
393
.withSelectList (selectList )
394
394
.isDistinct ()
0 commit comments