|
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