|
29 | 29 | import org.mybatis.dynamic.sql.util.Buildable; |
30 | 30 | import org.mybatis.dynamic.sql.util.ConfigurableStatement; |
31 | 31 |
|
32 | | -public class MultiSelectDSL implements Buildable<MultiSelectModel>, ConfigurableStatement<MultiSelectDSL>, |
33 | | - PagingDSL<MultiSelectModel> { |
| 32 | +public class MultiSelectDSL implements Buildable<MultiSelectModel>, ConfigurableStatement<MultiSelectDSL> { |
34 | 33 | private final List<UnionQuery> unionQueries = new ArrayList<>(); |
35 | 34 | private final SelectModel initialSelect; |
36 | 35 | private @Nullable OrderByModel orderByModel; |
@@ -62,22 +61,31 @@ public MultiSelectDSL orderBy(Collection<? extends SortSpecification> columns) { |
62 | 61 | return this; |
63 | 62 | } |
64 | 63 |
|
65 | | - @Override |
66 | | - public LimitFinisher<MultiSelectModel> limitWhenPresent(@Nullable Long limit) { |
| 64 | + public LimitFinisher limit(long limit) { |
| 65 | + return limitWhenPresent(limit); |
| 66 | + } |
| 67 | + |
| 68 | + public LimitFinisher limitWhenPresent(@Nullable Long limit) { |
67 | 69 | this.limit = limit; |
68 | | - return new LocalLimitFinisher(); |
| 70 | + return new LimitFinisher(); |
69 | 71 | } |
70 | 72 |
|
71 | | - @Override |
72 | | - public OffsetFirstFinisher<MultiSelectModel> offsetWhenPresent(@Nullable Long offset) { |
| 73 | + public OffsetFirstFinisher offset(long offset) { |
| 74 | + return offsetWhenPresent(offset); |
| 75 | + } |
| 76 | + |
| 77 | + public OffsetFirstFinisher offsetWhenPresent(@Nullable Long offset) { |
73 | 78 | this.offset = offset; |
74 | | - return new LocalOffsetFirstFinisher(); |
| 79 | + return new OffsetFirstFinisher(); |
75 | 80 | } |
76 | 81 |
|
77 | | - @Override |
78 | | - public FetchFirstFinisher<MultiSelectModel> fetchFirstWhenPresent(@Nullable Long fetchFirstRows) { |
| 82 | + public FetchFirstFinisher fetchFirst(long fetchFirstRows) { |
| 83 | + return fetchFirstWhenPresent(fetchFirstRows); |
| 84 | + } |
| 85 | + |
| 86 | + public FetchFirstFinisher fetchFirstWhenPresent(@Nullable Long fetchFirstRows) { |
79 | 87 | this.fetchFirstRows = fetchFirstRows; |
80 | | - return () -> this; |
| 88 | + return new FetchFirstFinisher(); |
81 | 89 | } |
82 | 90 |
|
83 | 91 | @Override |
@@ -105,25 +113,40 @@ public MultiSelectDSL configureStatement(Consumer<StatementConfiguration> consum |
105 | 113 | return this; |
106 | 114 | } |
107 | 115 |
|
108 | | - abstract class BaseBuildable implements Buildable<MultiSelectModel> { |
| 116 | + public class OffsetFirstFinisher implements Buildable<MultiSelectModel> { |
| 117 | + public FetchFirstFinisher fetchFirst(long fetchFirstRows) { |
| 118 | + return fetchFirstWhenPresent(fetchFirstRows); |
| 119 | + } |
| 120 | + |
| 121 | + public FetchFirstFinisher fetchFirstWhenPresent(@Nullable Long fetchFirstRows) { |
| 122 | + MultiSelectDSL.this.fetchFirstRows = fetchFirstRows; |
| 123 | + return new FetchFirstFinisher(); |
| 124 | + } |
| 125 | + |
109 | 126 | @Override |
110 | 127 | public MultiSelectModel build() { |
111 | 128 | return MultiSelectDSL.this.build(); |
112 | 129 | } |
113 | 130 | } |
114 | 131 |
|
115 | | - class LocalOffsetFirstFinisher extends BaseBuildable implements OffsetFirstFinisher<MultiSelectModel> { |
| 132 | + public class LimitFinisher implements Buildable<MultiSelectModel> { |
| 133 | + public MultiSelectDSL offset(long offset) { |
| 134 | + return offsetWhenPresent(offset); |
| 135 | + } |
| 136 | + |
| 137 | + public MultiSelectDSL offsetWhenPresent(@Nullable Long offset) { |
| 138 | + MultiSelectDSL.this.offset = offset; |
| 139 | + return MultiSelectDSL.this; |
| 140 | + } |
| 141 | + |
116 | 142 | @Override |
117 | | - public FetchFirstFinisher<MultiSelectModel> fetchFirstWhenPresent(Long fetchFirstRows) { |
118 | | - MultiSelectDSL.this.fetchFirstRows = fetchFirstRows; |
119 | | - return () -> MultiSelectDSL.this; |
| 143 | + public MultiSelectModel build() { |
| 144 | + return MultiSelectDSL.this.build(); |
120 | 145 | } |
121 | 146 | } |
122 | 147 |
|
123 | | - class LocalLimitFinisher extends BaseBuildable implements LimitFinisher<MultiSelectModel> { |
124 | | - @Override |
125 | | - public Buildable<MultiSelectModel> offsetWhenPresent(Long offset) { |
126 | | - MultiSelectDSL.this.offset = offset; |
| 148 | + public class FetchFirstFinisher { |
| 149 | + public MultiSelectDSL rowsOnly() { |
127 | 150 | return MultiSelectDSL.this; |
128 | 151 | } |
129 | 152 | } |
|
0 commit comments