Skip to content

Commit 22bc77f

Browse files
committed
Add "WhenPresent" versions of the paging methods
1 parent 6e6e225 commit 22bc77f

File tree

11 files changed

+328
-32
lines changed

11 files changed

+328
-32
lines changed

src/main/java/org/mybatis/dynamic/sql/delete/DeleteDSL.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ public DeleteWhereBuilder where() {
5656
}
5757

5858
public DeleteDSL<R> limit(long limit) {
59+
return limitWhenPresent(limit);
60+
}
61+
62+
public DeleteDSL<R> limitWhenPresent(Long limit) {
5963
this.limit = limit;
6064
return this;
6165
}
@@ -115,7 +119,11 @@ private DeleteWhereBuilder() {
115119
}
116120

117121
public DeleteDSL<R> limit(long limit) {
118-
return DeleteDSL.this.limit(limit);
122+
return limitWhenPresent(limit);
123+
}
124+
125+
public DeleteDSL<R> limitWhenPresent(Long limit) {
126+
return DeleteDSL.this.limitWhenPresent(limit);
119127
}
120128

121129
public DeleteDSL<R> orderBy(SortSpecification... columns) {

src/main/java/org/mybatis/dynamic/sql/select/MultiSelectDSL.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,28 @@ public MultiSelectDSL orderBy(Collection<? extends SortSpecification> columns) {
6262
}
6363

6464
public LimitFinisher limit(long limit) {
65+
return limitWhenPresent(limit);
66+
}
67+
68+
public LimitFinisher limitWhenPresent(Long limit) {
6569
this.limit = limit;
6670
return new LimitFinisher();
6771
}
6872

6973
public OffsetFirstFinisher offset(long offset) {
74+
return offsetWhenPresent(offset);
75+
}
76+
77+
public OffsetFirstFinisher offsetWhenPresent(Long offset) {
7078
this.offset = offset;
7179
return new OffsetFirstFinisher();
7280
}
7381

7482
public FetchFirstFinisher fetchFirst(long fetchFirstRows) {
83+
return fetchFirstWhenPresent(fetchFirstRows);
84+
}
85+
86+
public FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) {
7587
this.fetchFirstRows = fetchFirstRows;
7688
return new FetchFirstFinisher();
7789
}
@@ -104,7 +116,11 @@ public MultiSelectDSL configureStatement(Consumer<StatementConfiguration> consum
104116

105117
public class LimitFinisher implements Buildable<MultiSelectModel> {
106118
public OffsetFinisher offset(long offset) {
107-
MultiSelectDSL.this.offset(offset);
119+
return offsetWhenPresent(offset);
120+
}
121+
122+
public OffsetFinisher offsetWhenPresent(Long offset) {
123+
MultiSelectDSL.this.offsetWhenPresent(offset);
108124
return new OffsetFinisher();
109125
}
110126

@@ -125,8 +141,11 @@ public MultiSelectModel build() {
125141

126142
public class OffsetFirstFinisher implements Buildable<MultiSelectModel> {
127143
public FetchFirstFinisher fetchFirst(long fetchFirstRows) {
128-
MultiSelectDSL.this.fetchFirst(fetchFirstRows);
129-
return new FetchFirstFinisher();
144+
return fetchFirstWhenPresent(fetchFirstRows);
145+
}
146+
147+
public FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) {
148+
return MultiSelectDSL.this.fetchFirstWhenPresent(fetchFirstRows);
130149
}
131150

132151
@NotNull

src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java

Lines changed: 75 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -195,15 +195,27 @@ protected QueryExpressionModel buildModel() {
195195
}
196196

197197
public SelectDSL<R>.LimitFinisher limit(long limit) {
198-
return selectDSL.limit(limit);
198+
return limitWhenPresent(limit);
199+
}
200+
201+
public SelectDSL<R>.LimitFinisher limitWhenPresent(Long limit) {
202+
return selectDSL.limitWhenPresent(limit);
199203
}
200204

201205
public SelectDSL<R>.OffsetFirstFinisher offset(long offset) {
202-
return selectDSL.offset(offset);
206+
return offsetWhenPresent(offset);
207+
}
208+
209+
public SelectDSL<R>.OffsetFirstFinisher offsetWhenPresent(Long offset) {
210+
return selectDSL.offsetWhenPresent(offset);
203211
}
204212

205213
public SelectDSL<R>.FetchFirstFinisher fetchFirst(long fetchFirstRows) {
206-
return selectDSL.fetchFirst(fetchFirstRows);
214+
return fetchFirstWhenPresent(fetchFirstRows);
215+
}
216+
217+
public SelectDSL<R>.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) {
218+
return selectDSL.fetchFirstWhenPresent(fetchFirstRows);
207219
}
208220

209221
@Override
@@ -303,15 +315,27 @@ public GroupByFinisher groupBy(Collection<? extends BasicColumn> columns) {
303315
}
304316

305317
public SelectDSL<R>.LimitFinisher limit(long limit) {
306-
return QueryExpressionDSL.this.limit(limit);
318+
return limitWhenPresent(limit);
319+
}
320+
321+
public SelectDSL<R>.LimitFinisher limitWhenPresent(Long limit) {
322+
return QueryExpressionDSL.this.limitWhenPresent(limit);
307323
}
308324

309325
public SelectDSL<R>.OffsetFirstFinisher offset(long offset) {
310-
return QueryExpressionDSL.this.offset(offset);
326+
return offsetWhenPresent(offset);
327+
}
328+
329+
public SelectDSL<R>.OffsetFirstFinisher offsetWhenPresent(Long offset) {
330+
return QueryExpressionDSL.this.offsetWhenPresent(offset);
311331
}
312332

313333
public SelectDSL<R>.FetchFirstFinisher fetchFirst(long fetchFirstRows) {
314-
return QueryExpressionDSL.this.fetchFirst(fetchFirstRows);
334+
return fetchFirstWhenPresent(fetchFirstRows);
335+
}
336+
337+
public SelectDSL<R>.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) {
338+
return QueryExpressionDSL.this.fetchFirstWhenPresent(fetchFirstRows);
315339
}
316340

317341
@NotNull
@@ -485,15 +509,27 @@ public SelectDSL<R> orderBy(Collection<? extends SortSpecification> columns) {
485509
}
486510

487511
public SelectDSL<R>.LimitFinisher limit(long limit) {
488-
return QueryExpressionDSL.this.limit(limit);
512+
return limitWhenPresent(limit);
513+
}
514+
515+
public SelectDSL<R>.LimitFinisher limitWhenPresent(Long limit) {
516+
return QueryExpressionDSL.this.limitWhenPresent(limit);
489517
}
490518

491519
public SelectDSL<R>.OffsetFirstFinisher offset(long offset) {
492-
return QueryExpressionDSL.this.offset(offset);
520+
return offsetWhenPresent(offset);
521+
}
522+
523+
public SelectDSL<R>.OffsetFirstFinisher offsetWhenPresent(Long offset) {
524+
return QueryExpressionDSL.this.offsetWhenPresent(offset);
493525
}
494526

495527
public SelectDSL<R>.FetchFirstFinisher fetchFirst(long fetchFirstRows) {
496-
return QueryExpressionDSL.this.fetchFirst(fetchFirstRows);
528+
return fetchFirstWhenPresent(fetchFirstRows);
529+
}
530+
531+
public SelectDSL<R>.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) {
532+
return QueryExpressionDSL.this.fetchFirstWhenPresent(fetchFirstRows);
497533
}
498534
}
499535

@@ -521,15 +557,27 @@ public UnionBuilder unionAll() {
521557
}
522558

523559
public SelectDSL<R>.LimitFinisher limit(long limit) {
524-
return QueryExpressionDSL.this.limit(limit);
560+
return limitWhenPresent(limit);
561+
}
562+
563+
public SelectDSL<R>.LimitFinisher limitWhenPresent(Long limit) {
564+
return QueryExpressionDSL.this.limitWhenPresent(limit);
525565
}
526566

527567
public SelectDSL<R>.OffsetFirstFinisher offset(long offset) {
528-
return QueryExpressionDSL.this.offset(offset);
568+
return offsetWhenPresent(offset);
569+
}
570+
571+
public SelectDSL<R>.OffsetFirstFinisher offsetWhenPresent(Long offset) {
572+
return QueryExpressionDSL.this.offsetWhenPresent(offset);
529573
}
530574

531575
public SelectDSL<R>.FetchFirstFinisher fetchFirst(long fetchFirstRows) {
532-
return QueryExpressionDSL.this.fetchFirst(fetchFirstRows);
576+
return fetchFirstWhenPresent(fetchFirstRows);
577+
}
578+
579+
public SelectDSL<R>.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) {
580+
return QueryExpressionDSL.this.fetchFirstWhenPresent(fetchFirstRows);
533581
}
534582

535583
@Override
@@ -575,15 +623,27 @@ public class QueryExpressionHavingBuilder extends AbstractHavingFinisher<QueryEx
575623
implements Buildable<R> {
576624

577625
public SelectDSL<R>.FetchFirstFinisher fetchFirst(long fetchFirstRows) {
578-
return QueryExpressionDSL.this.fetchFirst(fetchFirstRows);
626+
return fetchFirstWhenPresent(fetchFirstRows);
627+
}
628+
629+
public SelectDSL<R>.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) {
630+
return QueryExpressionDSL.this.fetchFirstWhenPresent(fetchFirstRows);
579631
}
580632

581633
public SelectDSL<R>.OffsetFirstFinisher offset(long offset) {
582-
return QueryExpressionDSL.this.offset(offset);
634+
return offsetWhenPresent(offset);
635+
}
636+
637+
public SelectDSL<R>.OffsetFirstFinisher offsetWhenPresent(Long offset) {
638+
return QueryExpressionDSL.this.offsetWhenPresent(offset);
583639
}
584640

585641
public SelectDSL<R>.LimitFinisher limit(long limit) {
586-
return QueryExpressionDSL.this.limit(limit);
642+
return limitWhenPresent(limit);
643+
}
644+
645+
public SelectDSL<R>.LimitFinisher limitWhenPresent(Long limit) {
646+
return QueryExpressionDSL.this.limitWhenPresent(limit);
587647
}
588648

589649
public SelectDSL<R> orderBy(SortSpecification... columns) {

src/main/java/org/mybatis/dynamic/sql/select/SelectDSL.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,16 +108,28 @@ void orderBy(Collection<? extends SortSpecification> columns) {
108108
}
109109

110110
public LimitFinisher limit(long limit) {
111+
return limitWhenPresent(limit);
112+
}
113+
114+
public LimitFinisher limitWhenPresent(Long limit) {
111115
this.limit = limit;
112116
return new LimitFinisher();
113117
}
114118

115119
public OffsetFirstFinisher offset(long offset) {
120+
return offsetWhenPresent(offset);
121+
}
122+
123+
public OffsetFirstFinisher offsetWhenPresent(Long offset) {
116124
this.offset = offset;
117125
return new OffsetFirstFinisher();
118126
}
119127

120128
public FetchFirstFinisher fetchFirst(long fetchFirstRows) {
129+
return fetchFirstWhenPresent(fetchFirstRows);
130+
}
131+
132+
public FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) {
121133
this.fetchFirstRows = fetchFirstRows;
122134
return new FetchFirstFinisher();
123135
}
@@ -155,7 +167,11 @@ private Optional<PagingModel> buildPagingModel() {
155167

156168
public class LimitFinisher implements Buildable<R> {
157169
public OffsetFinisher offset(long offset) {
158-
SelectDSL.this.offset(offset);
170+
return offsetWhenPresent(offset);
171+
}
172+
173+
public OffsetFinisher offsetWhenPresent(Long offset) {
174+
SelectDSL.this.offsetWhenPresent(offset);
159175
return new OffsetFinisher();
160176
}
161177

@@ -176,8 +192,11 @@ public R build() {
176192

177193
public class OffsetFirstFinisher implements Buildable<R> {
178194
public FetchFirstFinisher fetchFirst(long fetchFirstRows) {
179-
SelectDSL.this.fetchFirst(fetchFirstRows);
180-
return new FetchFirstFinisher();
195+
return fetchFirstWhenPresent(fetchFirstRows);
196+
}
197+
198+
public FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) {
199+
return SelectDSL.this.fetchFirstWhenPresent(fetchFirstRows);
181200
}
182201

183202
@NotNull

src/main/java/org/mybatis/dynamic/sql/update/UpdateDSL.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ public UpdateWhereBuilder where() {
7676
}
7777

7878
public UpdateDSL<R> limit(long limit) {
79+
return limitWhenPresent(limit);
80+
}
81+
82+
public UpdateDSL<R> limitWhenPresent(Long limit) {
7983
this.limit = limit;
8084
return this;
8185
}
@@ -196,7 +200,11 @@ private UpdateWhereBuilder() {
196200
}
197201

198202
public UpdateDSL<R> limit(long limit) {
199-
return UpdateDSL.this.limit(limit);
203+
return limitWhenPresent(limit);
204+
}
205+
206+
public UpdateDSL<R> limitWhenPresent(Long limit) {
207+
return UpdateDSL.this.limitWhenPresent(limit);
200208
}
201209

202210
public UpdateDSL<R> orderBy(SortSpecification... columns) {

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinDeleteBuilder.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ class KotlinDeleteBuilder(private val dsl: DeleteDSL<DeleteModel>) :
3030
}
3131

3232
fun limit(limit: Long) {
33-
dsl.limit(limit)
33+
limitWhenPresent(limit)
34+
}
35+
36+
fun limitWhenPresent(limit: Long?) {
37+
dsl.limitWhenPresent(limit)
3438
}
3539

3640
override fun build(): DeleteModel = dsl.build()

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinMultiSelectBuilder.kt

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ typealias MultiSelectCompleter = KotlinMultiSelectBuilder.() -> Unit
2828
@MyBatisDslMarker
2929
class KotlinMultiSelectBuilder: Buildable<MultiSelectModel> {
3030
private var dsl: MultiSelectDSL? = null
31-
private set(value) {
31+
set(value) {
3232
assertNull(field, "ERROR.33") //$NON-NLS-1$
3333
field = value
3434
}
@@ -64,15 +64,27 @@ class KotlinMultiSelectBuilder: Buildable<MultiSelectModel> {
6464
}
6565

6666
fun limit(limit: Long) {
67-
getDsl().limit(limit)
67+
limitWhenPresent(limit)
68+
}
69+
70+
fun limitWhenPresent(limit: Long?) {
71+
getDsl().limitWhenPresent(limit)
6872
}
6973

7074
fun offset(offset: Long) {
71-
getDsl().offset(offset)
75+
offsetWhenPresent(offset)
76+
}
77+
78+
fun offsetWhenPresent(offset: Long?) {
79+
getDsl().offsetWhenPresent(offset)
7280
}
7381

7482
fun fetchFirst(fetchFirstRows: Long) {
75-
getDsl().fetchFirst(fetchFirstRows).rowsOnly()
83+
fetchFirstWhenPresent(fetchFirstRows)
84+
}
85+
86+
fun fetchFirstWhenPresent(fetchFirstRows: Long?) {
87+
getDsl().fetchFirstWhenPresent(fetchFirstRows).rowsOnly()
7688
}
7789

7890
fun configureStatement(c: StatementConfiguration.() -> Unit) {

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinSelectBuilder.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,27 @@ class KotlinSelectBuilder(private val fromGatherer: QueryExpressionDSL.FromGathe
5959
}
6060

6161
fun limit(limit: Long) {
62-
getDsl().limit(limit)
62+
limitWhenPresent(limit)
63+
}
64+
65+
fun limitWhenPresent(limit: Long?) {
66+
getDsl().limitWhenPresent(limit)
6367
}
6468

6569
fun offset(offset: Long) {
66-
getDsl().offset(offset)
70+
offsetWhenPresent(offset)
71+
}
72+
73+
fun offsetWhenPresent(offset: Long?) {
74+
getDsl().offsetWhenPresent(offset)
6775
}
6876

6977
fun fetchFirst(fetchFirstRows: Long) {
70-
getDsl().fetchFirst(fetchFirstRows).rowsOnly()
78+
fetchFirstWhenPresent(fetchFirstRows)
79+
}
80+
81+
fun fetchFirstWhenPresent(fetchFirstRows: Long?) {
82+
getDsl().fetchFirstWhenPresent(fetchFirstRows).rowsOnly()
7183
}
7284

7385
fun union(union: KotlinUnionBuilder.() -> Unit): Unit =

0 commit comments

Comments
 (0)