15
15
*/
16
16
package org .mybatis .dynamic .sql .select ;
17
17
18
- import java .util .ArrayList ;
19
- import java .util .HashMap ;
20
- import java .util .List ;
21
- import java .util .Map ;
22
18
import java .util .Objects ;
23
19
import java .util .Optional ;
24
- import java .util .function .Function ;
25
- import java .util .stream .Stream ;
26
20
27
- import org .mybatis .dynamic .sql .SelectListItem ;
28
- import org .mybatis .dynamic .sql .SqlTable ;
29
- import org .mybatis .dynamic .sql .render .GuaranteedTableAliasCalculator ;
30
21
import org .mybatis .dynamic .sql .render .RenderingStrategy ;
31
- import org .mybatis .dynamic .sql .render .TableAliasCalculator ;
32
- import org .mybatis .dynamic .sql .select .join .JoinModel ;
33
22
import org .mybatis .dynamic .sql .select .render .SelectRenderer ;
34
23
import org .mybatis .dynamic .sql .select .render .SelectSupport ;
35
- import org .mybatis .dynamic .sql .where .WhereModel ;
36
24
37
25
public class SelectModel {
38
- private boolean isDistinct ;
39
- private List <SelectListItem > selectList ;
40
- private SqlTable table ;
41
- private Optional <JoinModel > joinModel ;
42
- private TableAliasCalculator tableAliasCalculator ;
43
- private Optional <WhereModel > whereModel ;
26
+ private QueryExpression queryExpression ;
44
27
private Optional <OrderByModel > orderByModel ;
45
28
46
29
private SelectModel (Builder builder ) {
47
- isDistinct = builder .isDistinct ;
48
- selectList = Objects .requireNonNull (builder .selectList );
49
- table = Objects .requireNonNull (builder .table );
50
- joinModel = Optional .ofNullable (builder .joinModel );
51
- tableAliasCalculator = joinModel .map (jm -> GuaranteedTableAliasCalculator .of (builder .tableAliases ))
52
- .orElse (TableAliasCalculator .of (builder .tableAliases ));
53
- whereModel = Optional .ofNullable (builder .whereModel );
30
+ queryExpression = Objects .requireNonNull (builder .queryExpression );
54
31
orderByModel = Optional .ofNullable (builder .orderByModel );
55
32
}
56
33
57
- public boolean isDistinct () {
58
- return isDistinct ;
59
- }
60
-
61
- public <R > Stream <R > mapColumns (Function <SelectListItem , R > mapper ) {
62
- return selectList .stream ().map (mapper );
63
- }
64
-
65
- public SqlTable table () {
66
- return table ;
67
- }
68
-
69
- public TableAliasCalculator tableAliasCalculator () {
70
- return tableAliasCalculator ;
71
- }
72
-
73
- public Optional <WhereModel > whereModel () {
74
- return whereModel ;
75
- }
76
-
77
- public Optional <JoinModel > joinModel () {
78
- return joinModel ;
34
+ public QueryExpression queryExpression () {
35
+ return queryExpression ;
79
36
}
80
37
81
38
public Optional <OrderByModel > orderByModel () {
@@ -86,55 +43,20 @@ public SelectSupport render(RenderingStrategy renderingStrategy) {
86
43
return SelectRenderer .of (this ).render (renderingStrategy );
87
44
}
88
45
89
- public String calculateTableNameIncludingAlias (SqlTable table ) {
90
- return tableAliasCalculator .aliasForTable (table )
91
- .map (a -> table .name () + " " + a ) //$NON-NLS-1$
92
- .orElseGet (table ::name );
93
- }
94
-
95
46
public static class Builder {
96
- private boolean isDistinct ;
97
- private List <SelectListItem > selectList = new ArrayList <>();
98
- private SqlTable table ;
99
- private Map <SqlTable , String > tableAliases = new HashMap <>();
100
- private WhereModel whereModel ;
47
+ private QueryExpression queryExpression ;
101
48
private OrderByModel orderByModel ;
102
- private JoinModel joinModel ;
103
-
104
- public Builder (SqlTable table ) {
105
- this .table = table ;
106
- }
107
49
108
- public Builder isDistinct (boolean isDistinct ) {
109
- this .isDistinct = isDistinct ;
110
- return this ;
111
- }
112
-
113
- public Builder withColumns (List <SelectListItem > selectList ) {
114
- this .selectList .addAll (selectList );
115
- return this ;
116
- }
117
-
118
- public Builder withTableAliases (Map <SqlTable , String > tableAliases ) {
119
- this .tableAliases .putAll (tableAliases );
50
+ public Builder withQueryExpression (QueryExpression queryExpression ) {
51
+ this .queryExpression = queryExpression ;
120
52
return this ;
121
53
}
122
54
123
- public Builder withWhereModel (WhereModel whereModel ) {
124
- this .whereModel = whereModel ;
125
- return this ;
126
- }
127
-
128
55
public Builder withOrderByModel (OrderByModel orderByModel ) {
129
56
this .orderByModel = orderByModel ;
130
57
return this ;
131
58
}
132
59
133
- public Builder withJoinModel (JoinModel joinModel ) {
134
- this .joinModel = joinModel ;
135
- return this ;
136
- }
137
-
138
60
public SelectModel build () {
139
61
return new SelectModel (this );
140
62
}
0 commit comments