diff --git a/CHANGELOG.md b/CHANGELOG.md index 010c421c2..b4c7526c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,8 @@ Other important changes: an empty In condition would render as invalid SQL and would usually cause a runtime exception from the database. With this change, the exception thrown is more predictable and the error is caught before sending the SQL to the database. +- All the paging methods (limit, offset, fetchFirst) now have "WhenPresent" variations that will drop the phrase from + rendering if a null value is passed in ## Release 1.5.2 - June 3, 2024 diff --git a/src/main/java/org/mybatis/dynamic/sql/delete/DeleteDSL.java b/src/main/java/org/mybatis/dynamic/sql/delete/DeleteDSL.java index e7c1ad184..825eaa699 100644 --- a/src/main/java/org/mybatis/dynamic/sql/delete/DeleteDSL.java +++ b/src/main/java/org/mybatis/dynamic/sql/delete/DeleteDSL.java @@ -56,6 +56,10 @@ public DeleteWhereBuilder where() { } public DeleteDSL limit(long limit) { + return limitWhenPresent(limit); + } + + public DeleteDSL limitWhenPresent(Long limit) { this.limit = limit; return this; } @@ -115,7 +119,11 @@ private DeleteWhereBuilder() { } public DeleteDSL limit(long limit) { - return DeleteDSL.this.limit(limit); + return limitWhenPresent(limit); + } + + public DeleteDSL limitWhenPresent(Long limit) { + return DeleteDSL.this.limitWhenPresent(limit); } public DeleteDSL orderBy(SortSpecification... columns) { diff --git a/src/main/java/org/mybatis/dynamic/sql/exception/NonRenderingWhereClauseException.java b/src/main/java/org/mybatis/dynamic/sql/exception/NonRenderingWhereClauseException.java index 23210e5a4..bcdcbf9a0 100644 --- a/src/main/java/org/mybatis/dynamic/sql/exception/NonRenderingWhereClauseException.java +++ b/src/main/java/org/mybatis/dynamic/sql/exception/NonRenderingWhereClauseException.java @@ -15,12 +15,12 @@ */ package org.mybatis.dynamic.sql.exception; +import java.io.Serial; + import org.mybatis.dynamic.sql.configuration.GlobalConfiguration; import org.mybatis.dynamic.sql.configuration.StatementConfiguration; import org.mybatis.dynamic.sql.util.Messages; -import java.io.Serial; - /** * This exception is thrown when the where clause in a statement will not render. * This can happen if all the optional conditions in a where clause fail to diff --git a/src/main/java/org/mybatis/dynamic/sql/select/MultiSelectDSL.java b/src/main/java/org/mybatis/dynamic/sql/select/MultiSelectDSL.java index ad0f2aba3..6b01f3696 100644 --- a/src/main/java/org/mybatis/dynamic/sql/select/MultiSelectDSL.java +++ b/src/main/java/org/mybatis/dynamic/sql/select/MultiSelectDSL.java @@ -29,7 +29,8 @@ import org.mybatis.dynamic.sql.util.Buildable; import org.mybatis.dynamic.sql.util.ConfigurableStatement; -public class MultiSelectDSL implements Buildable, ConfigurableStatement { +public class MultiSelectDSL implements Buildable, ConfigurableStatement, + PagingDSL { private final List unionQueries = new ArrayList<>(); private final SelectModel initialSelect; private OrderByModel orderByModel; @@ -61,19 +62,22 @@ public MultiSelectDSL orderBy(Collection columns) { return this; } - public LimitFinisher limit(long limit) { + @Override + public LimitFinisher limitWhenPresent(Long limit) { this.limit = limit; - return new LimitFinisher(); + return new LF(); } - public OffsetFirstFinisher offset(long offset) { + @Override + public OffsetFirstFinisher offsetWhenPresent(Long offset) { this.offset = offset; - return new OffsetFirstFinisher(); + return new OFF(); } - public FetchFirstFinisher fetchFirst(long fetchFirstRows) { + @Override + public FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) { this.fetchFirstRows = fetchFirstRows; - return new FetchFirstFinisher(); + return new FFF(); } @NotNull @@ -102,31 +106,18 @@ public MultiSelectDSL configureStatement(Consumer consum return this; } - public class LimitFinisher implements Buildable { - public OffsetFinisher offset(long offset) { - MultiSelectDSL.this.offset(offset); - return new OffsetFinisher(); - } - - @NotNull + class FFF implements FetchFirstFinisher { @Override - public MultiSelectModel build() { - return MultiSelectDSL.this.build(); + public Buildable rowsOnly() { + return MultiSelectDSL.this; } } - public class OffsetFinisher implements Buildable { - @NotNull + class LF implements LimitFinisher { @Override - public MultiSelectModel build() { - return MultiSelectDSL.this.build(); - } - } - - public class OffsetFirstFinisher implements Buildable { - public FetchFirstFinisher fetchFirst(long fetchFirstRows) { - MultiSelectDSL.this.fetchFirst(fetchFirstRows); - return new FetchFirstFinisher(); + public Buildable offsetWhenPresent(Long offset) { + MultiSelectDSL.this.offset = offset; + return MultiSelectDSL.this; } @NotNull @@ -136,13 +127,13 @@ public MultiSelectModel build() { } } - public class FetchFirstFinisher { - public RowsOnlyFinisher rowsOnly() { - return new RowsOnlyFinisher(); + class OFF implements OffsetFirstFinisher { + @Override + public FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) { + MultiSelectDSL.this.fetchFirstRows = fetchFirstRows; + return new FFF(); } - } - public class RowsOnlyFinisher implements Buildable { @NotNull @Override public MultiSelectModel build() { diff --git a/src/main/java/org/mybatis/dynamic/sql/select/PagingDSL.java b/src/main/java/org/mybatis/dynamic/sql/select/PagingDSL.java new file mode 100644 index 000000000..89cfafafb --- /dev/null +++ b/src/main/java/org/mybatis/dynamic/sql/select/PagingDSL.java @@ -0,0 +1,58 @@ +/* + * Copyright 2016-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.mybatis.dynamic.sql.select; + +import org.mybatis.dynamic.sql.util.Buildable; + +public interface PagingDSL { + default LimitFinisher limit(long limit) { + return limitWhenPresent(limit); + } + + LimitFinisher limitWhenPresent(Long limit); + + default OffsetFirstFinisher offset(long offset) { + return offsetWhenPresent(offset); + } + + OffsetFirstFinisher offsetWhenPresent(Long offset); + + default FetchFirstFinisher fetchFirst(long fetchFirstRows) { + return fetchFirstWhenPresent(fetchFirstRows); + } + + FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows); + + interface LimitFinisher extends Buildable { + default Buildable offset(long offset) { + return offsetWhenPresent(offset); + } + + Buildable offsetWhenPresent(Long offset); + } + + interface OffsetFirstFinisher extends Buildable { + default FetchFirstFinisher fetchFirst(long fetchFirstRows) { + return fetchFirstWhenPresent(fetchFirstRows); + } + + FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows); + } + + interface FetchFirstFinisher { + Buildable rowsOnly(); + } +} diff --git a/src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java b/src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java index 593252979..4e8bb4d76 100644 --- a/src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java +++ b/src/main/java/org/mybatis/dynamic/sql/select/QueryExpressionDSL.java @@ -42,7 +42,7 @@ public class QueryExpressionDSL extends AbstractQueryExpressionDSL.QueryExpressionWhereBuilder, QueryExpressionDSL> - implements Buildable { + implements Buildable, PagingDSL { private final String connector; private final SelectDSL selectDSL; @@ -194,16 +194,19 @@ protected QueryExpressionModel buildModel() { .build(); } - public SelectDSL.LimitFinisher limit(long limit) { - return selectDSL.limit(limit); + @Override + public PagingDSL.LimitFinisher limitWhenPresent(Long limit) { + return selectDSL.limitWhenPresent(limit); } - public SelectDSL.OffsetFirstFinisher offset(long offset) { - return selectDSL.offset(offset); + @Override + public PagingDSL.OffsetFirstFinisher offsetWhenPresent(Long offset) { + return selectDSL.offsetWhenPresent(offset); } - public SelectDSL.FetchFirstFinisher fetchFirst(long fetchFirstRows) { - return selectDSL.fetchFirst(fetchFirstRows); + @Override + public PagingDSL.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) { + return selectDSL.fetchFirstWhenPresent(fetchFirstRows); } @Override @@ -273,7 +276,7 @@ public FromGatherer build() { } public class QueryExpressionWhereBuilder extends AbstractWhereFinisher - implements Buildable { + implements Buildable, PagingDSL { private QueryExpressionWhereBuilder() { super(QueryExpressionDSL.this); } @@ -302,16 +305,19 @@ public GroupByFinisher groupBy(Collection columns) { return QueryExpressionDSL.this.groupBy(columns); } - public SelectDSL.LimitFinisher limit(long limit) { - return QueryExpressionDSL.this.limit(limit); + @Override + public PagingDSL.LimitFinisher limitWhenPresent(Long limit) { + return QueryExpressionDSL.this.limitWhenPresent(limit); } - public SelectDSL.OffsetFirstFinisher offset(long offset) { - return QueryExpressionDSL.this.offset(offset); + @Override + public PagingDSL.OffsetFirstFinisher offsetWhenPresent(Long offset) { + return QueryExpressionDSL.this.offsetWhenPresent(offset); } - public SelectDSL.FetchFirstFinisher fetchFirst(long fetchFirstRows) { - return QueryExpressionDSL.this.fetchFirst(fetchFirstRows); + @Override + public PagingDSL.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) { + return QueryExpressionDSL.this.fetchFirstWhenPresent(fetchFirstRows); } @NotNull @@ -351,7 +357,7 @@ public JoinSpecificationFinisher on(BindableColumn joinColumn, JoinCondit public class JoinSpecificationFinisher extends AbstractWhereStarter - implements Buildable { + implements Buildable, PagingDSL { private final JoinSpecification.Builder joinSpecificationBuilder; public JoinSpecificationFinisher(TableExpression table, BindableColumn joinColumn, @@ -484,20 +490,24 @@ public SelectDSL orderBy(Collection columns) { return QueryExpressionDSL.this.orderBy(columns); } - public SelectDSL.LimitFinisher limit(long limit) { - return QueryExpressionDSL.this.limit(limit); + @Override + public PagingDSL.LimitFinisher limitWhenPresent(Long limit) { + return QueryExpressionDSL.this.limitWhenPresent(limit); } - public SelectDSL.OffsetFirstFinisher offset(long offset) { - return QueryExpressionDSL.this.offset(offset); + @Override + public PagingDSL.OffsetFirstFinisher offsetWhenPresent(Long offset) { + return QueryExpressionDSL.this.offsetWhenPresent(offset); } - public SelectDSL.FetchFirstFinisher fetchFirst(long fetchFirstRows) { - return QueryExpressionDSL.this.fetchFirst(fetchFirstRows); + @Override + public PagingDSL.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) { + return QueryExpressionDSL.this.fetchFirstWhenPresent(fetchFirstRows); } } - public class GroupByFinisher extends AbstractHavingStarter implements Buildable { + public class GroupByFinisher extends AbstractHavingStarter + implements Buildable, PagingDSL { public SelectDSL orderBy(SortSpecification... columns) { return orderBy(Arrays.asList(columns)); } @@ -520,16 +530,19 @@ public UnionBuilder unionAll() { return QueryExpressionDSL.this.unionAll(); } - public SelectDSL.LimitFinisher limit(long limit) { - return QueryExpressionDSL.this.limit(limit); + @Override + public PagingDSL.LimitFinisher limitWhenPresent(Long limit) { + return QueryExpressionDSL.this.limitWhenPresent(limit); } - public SelectDSL.OffsetFirstFinisher offset(long offset) { - return QueryExpressionDSL.this.offset(offset); + @Override + public PagingDSL.OffsetFirstFinisher offsetWhenPresent(Long offset) { + return QueryExpressionDSL.this.offsetWhenPresent(offset); } - public SelectDSL.FetchFirstFinisher fetchFirst(long fetchFirstRows) { - return QueryExpressionDSL.this.fetchFirst(fetchFirstRows); + @Override + public PagingDSL.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) { + return QueryExpressionDSL.this.fetchFirstWhenPresent(fetchFirstRows); } @Override @@ -572,18 +585,21 @@ public FromGatherer selectDistinct(List selectList) { } public class QueryExpressionHavingBuilder extends AbstractHavingFinisher - implements Buildable { + implements Buildable, PagingDSL { - public SelectDSL.FetchFirstFinisher fetchFirst(long fetchFirstRows) { - return QueryExpressionDSL.this.fetchFirst(fetchFirstRows); + @Override + public PagingDSL.LimitFinisher limitWhenPresent(Long limit) { + return QueryExpressionDSL.this.limitWhenPresent(limit); } - public SelectDSL.OffsetFirstFinisher offset(long offset) { - return QueryExpressionDSL.this.offset(offset); + @Override + public PagingDSL.OffsetFirstFinisher offsetWhenPresent(Long offset) { + return QueryExpressionDSL.this.offsetWhenPresent(offset); } - public SelectDSL.LimitFinisher limit(long limit) { - return QueryExpressionDSL.this.limit(limit); + @Override + public PagingDSL.FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) { + return QueryExpressionDSL.this.fetchFirstWhenPresent(fetchFirstRows); } public SelectDSL orderBy(SortSpecification... columns) { diff --git a/src/main/java/org/mybatis/dynamic/sql/select/SelectDSL.java b/src/main/java/org/mybatis/dynamic/sql/select/SelectDSL.java index cb1fae92d..82e55aefb 100644 --- a/src/main/java/org/mybatis/dynamic/sql/select/SelectDSL.java +++ b/src/main/java/org/mybatis/dynamic/sql/select/SelectDSL.java @@ -41,7 +41,7 @@ * @param * the type of model produced by this builder, typically SelectModel */ -public class SelectDSL implements Buildable, ConfigurableStatement> { +public class SelectDSL implements Buildable, ConfigurableStatement>, PagingDSL { private final Function adapterFunction; private final List> queryExpressions = new ArrayList<>(); @@ -107,19 +107,19 @@ void orderBy(Collection columns) { orderByModel = OrderByModel.of(columns); } - public LimitFinisher limit(long limit) { + public LimitFinisher limitWhenPresent(Long limit) { this.limit = limit; - return new LimitFinisher(); + return new LF(); } - public OffsetFirstFinisher offset(long offset) { + public OffsetFirstFinisher offsetWhenPresent(Long offset) { this.offset = offset; - return new OffsetFirstFinisher(); + return new OFF(); } - public FetchFirstFinisher fetchFirst(long fetchFirstRows) { + public FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) { this.fetchFirstRows = fetchFirstRows; - return new FetchFirstFinisher(); + return new FFF(); } @Override @@ -153,31 +153,18 @@ private Optional buildPagingModel() { .build(); } - public class LimitFinisher implements Buildable { - public OffsetFinisher offset(long offset) { - SelectDSL.this.offset(offset); - return new OffsetFinisher(); - } - - @NotNull + class FFF implements FetchFirstFinisher { @Override - public R build() { - return SelectDSL.this.build(); + public Buildable rowsOnly() { + return SelectDSL.this; } } - public class OffsetFinisher implements Buildable { - @NotNull + class LF implements LimitFinisher { @Override - public R build() { - return SelectDSL.this.build(); - } - } - - public class OffsetFirstFinisher implements Buildable { - public FetchFirstFinisher fetchFirst(long fetchFirstRows) { - SelectDSL.this.fetchFirst(fetchFirstRows); - return new FetchFirstFinisher(); + public Buildable offsetWhenPresent(Long offset) { + SelectDSL.this.offset = offset; + return SelectDSL.this; } @NotNull @@ -187,13 +174,13 @@ public R build() { } } - public class FetchFirstFinisher { - public RowsOnlyFinisher rowsOnly() { - return new RowsOnlyFinisher(); + class OFF implements OffsetFirstFinisher { + @Override + public FetchFirstFinisher fetchFirstWhenPresent(Long fetchFirstRows) { + SelectDSL.this.fetchFirstRows = fetchFirstRows; + return new FFF(); } - } - public class RowsOnlyFinisher implements Buildable { @NotNull @Override public R build() { diff --git a/src/main/java/org/mybatis/dynamic/sql/update/UpdateDSL.java b/src/main/java/org/mybatis/dynamic/sql/update/UpdateDSL.java index 8cf7259a3..15f021b16 100644 --- a/src/main/java/org/mybatis/dynamic/sql/update/UpdateDSL.java +++ b/src/main/java/org/mybatis/dynamic/sql/update/UpdateDSL.java @@ -76,6 +76,10 @@ public UpdateWhereBuilder where() { } public UpdateDSL limit(long limit) { + return limitWhenPresent(limit); + } + + public UpdateDSL limitWhenPresent(Long limit) { this.limit = limit; return this; } @@ -196,7 +200,11 @@ private UpdateWhereBuilder() { } public UpdateDSL limit(long limit) { - return UpdateDSL.this.limit(limit); + return limitWhenPresent(limit); + } + + public UpdateDSL limitWhenPresent(Long limit) { + return UpdateDSL.this.limitWhenPresent(limit); } public UpdateDSL orderBy(SortSpecification... columns) { diff --git a/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinDeleteBuilder.kt b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinDeleteBuilder.kt index 011928b9e..3146d5e11 100644 --- a/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinDeleteBuilder.kt +++ b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinDeleteBuilder.kt @@ -30,7 +30,11 @@ class KotlinDeleteBuilder(private val dsl: DeleteDSL) : } fun limit(limit: Long) { - dsl.limit(limit) + limitWhenPresent(limit) + } + + fun limitWhenPresent(limit: Long?) { + dsl.limitWhenPresent(limit) } override fun build(): DeleteModel = dsl.build() diff --git a/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinMultiSelectBuilder.kt b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinMultiSelectBuilder.kt index 440232397..b0512ed1f 100644 --- a/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinMultiSelectBuilder.kt +++ b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinMultiSelectBuilder.kt @@ -26,9 +26,9 @@ import org.mybatis.dynamic.sql.util.Buildable typealias MultiSelectCompleter = KotlinMultiSelectBuilder.() -> Unit @MyBatisDslMarker -class KotlinMultiSelectBuilder: Buildable { +class KotlinMultiSelectBuilder: Buildable, KotlinPagingDSL { private var dsl: MultiSelectDSL? = null - private set(value) { + set(value) { assertNull(field, "ERROR.33") //$NON-NLS-1$ field = value } @@ -63,16 +63,16 @@ class KotlinMultiSelectBuilder: Buildable { getDsl().orderBy(columns.asList()) } - fun limit(limit: Long) { - getDsl().limit(limit) + override fun limitWhenPresent(limit: Long?) { + getDsl().limitWhenPresent(limit) } - fun offset(offset: Long) { - getDsl().offset(offset) + override fun offsetWhenPresent(offset: Long?) { + getDsl().offsetWhenPresent(offset) } - fun fetchFirst(fetchFirstRows: Long) { - getDsl().fetchFirst(fetchFirstRows).rowsOnly() + override fun fetchFirstWhenPresent(fetchFirstRows: Long?) { + getDsl().fetchFirstWhenPresent(fetchFirstRows).rowsOnly() } fun configureStatement(c: StatementConfiguration.() -> Unit) { diff --git a/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinPagingDSL.kt b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinPagingDSL.kt new file mode 100644 index 000000000..f0b898dd1 --- /dev/null +++ b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinPagingDSL.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2016-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.mybatis.dynamic.sql.util.kotlin + +interface KotlinPagingDSL { + fun limit(limit: Long) { + limitWhenPresent(limit) + } + + fun limitWhenPresent(limit: Long?) + + fun offset(offset: Long) { + offsetWhenPresent(offset) + } + + fun offsetWhenPresent(offset: Long?) + + fun fetchFirst(fetchFirstRows: Long) { + fetchFirstWhenPresent(fetchFirstRows) + } + + fun fetchFirstWhenPresent(fetchFirstRows: Long?) +} diff --git a/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinSelectBuilder.kt b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinSelectBuilder.kt index e62b5ef26..abaefebdc 100644 --- a/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinSelectBuilder.kt +++ b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinSelectBuilder.kt @@ -28,7 +28,7 @@ typealias SelectCompleter = KotlinSelectBuilder.() -> Unit @Suppress("TooManyFunctions") class KotlinSelectBuilder(private val fromGatherer: QueryExpressionDSL.FromGatherer) : - KotlinBaseJoiningBuilder>(), Buildable { + KotlinBaseJoiningBuilder>(), Buildable, KotlinPagingDSL { private var dsl: KQueryExpressionDSL? = null @@ -58,16 +58,16 @@ class KotlinSelectBuilder(private val fromGatherer: QueryExpressionDSL.FromGathe getDsl().orderBy(columns.toList()) } - fun limit(limit: Long) { - getDsl().limit(limit) + override fun limitWhenPresent(limit: Long?) { + getDsl().limitWhenPresent(limit) } - fun offset(offset: Long) { - getDsl().offset(offset) + override fun offsetWhenPresent(offset: Long?) { + getDsl().offsetWhenPresent(offset) } - fun fetchFirst(fetchFirstRows: Long) { - getDsl().fetchFirst(fetchFirstRows).rowsOnly() + override fun fetchFirstWhenPresent(fetchFirstRows: Long?) { + getDsl().fetchFirstWhenPresent(fetchFirstRows).rowsOnly() } fun union(union: KotlinUnionBuilder.() -> Unit): Unit = diff --git a/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinUpdateBuilder.kt b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinUpdateBuilder.kt index ef7eb6804..93dbfaa8a 100644 --- a/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinUpdateBuilder.kt +++ b/src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinUpdateBuilder.kt @@ -34,7 +34,11 @@ class KotlinUpdateBuilder(private val dsl: UpdateDSL) : } fun limit(limit: Long) { - dsl.limit(limit) + limitWhenPresent(limit) + } + + fun limitWhenPresent(limit: Long?) { + dsl.limitWhenPresent(limit) } override fun build(): UpdateModel = dsl.build() diff --git a/src/test/java/examples/animal/data/AnimalDataTest.java b/src/test/java/examples/animal/data/AnimalDataTest.java index d751decab..12a21e3f6 100644 --- a/src/test/java/examples/animal/data/AnimalDataTest.java +++ b/src/test/java/examples/animal/data/AnimalDataTest.java @@ -108,6 +108,24 @@ void testSelectAllRows() { } } + @Test + void testSelectAllRowsWithNullLimit() { + try (SqlSession sqlSession = sqlSessionFactory.openSession()) { + AnimalDataMapper mapper = sqlSession.getMapper(AnimalDataMapper.class); + SelectStatementProvider selectStatement = select(id, animalName, bodyWeight, brainWeight) + .from(animalData) + .limitWhenPresent(null) + .build() + .render(RenderingStrategies.MYBATIS3); + List animals = mapper.selectMany(selectStatement); + + assertAll( + () -> assertThat(animals).hasSize(65), + () -> assertThat(animals).first().isNotNull().extracting(AnimalData::getId).isEqualTo(1) + ); + } + } + @Test void testSelectAllRowsWithRowBounds() { try (SqlSession sqlSession = sqlSessionFactory.openSession()) { diff --git a/src/test/java/examples/animal/data/VariousPagingAndLimitScenariosTest.java b/src/test/java/examples/animal/data/VariousPagingAndLimitScenariosTest.java new file mode 100644 index 000000000..1fde45c49 --- /dev/null +++ b/src/test/java/examples/animal/data/VariousPagingAndLimitScenariosTest.java @@ -0,0 +1,132 @@ +/* + * Copyright 2016-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package examples.animal.data; + +import static examples.animal.data.AnimalDataDynamicSqlSupport.animalData; +import static examples.animal.data.AnimalDataDynamicSqlSupport.id; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mybatis.dynamic.sql.SqlBuilder.deleteFrom; +import static org.mybatis.dynamic.sql.SqlBuilder.isLessThan; +import static org.mybatis.dynamic.sql.SqlBuilder.select; +import static org.mybatis.dynamic.sql.SqlBuilder.update; + +import org.junit.jupiter.api.Test; +import org.mybatis.dynamic.sql.render.RenderingStrategies; + +class VariousPagingAndLimitScenariosTest { + + @Test + void testOptionalLimitOnDelete() { + var deleteStatement = deleteFrom(animalData) + .limitWhenPresent(null) + .build() + .render(RenderingStrategies.SPRING_NAMED_PARAMETER); + + assertThat(deleteStatement.getDeleteStatement()).isEqualTo("delete from AnimalData"); + } + + @Test + void testOptionalLimitOnDeleteWithWhere() { + var deleteStatement = deleteFrom(animalData) + .where(id, isLessThan(22)) + .limitWhenPresent(null) + .build() + .render(RenderingStrategies.SPRING_NAMED_PARAMETER); + + assertThat(deleteStatement.getDeleteStatement()) + .isEqualTo("delete from AnimalData where id < :p1"); + } + + @Test + void testOptionalLimitOnUpdate() { + var updateStatement = update(animalData) + .set(id).equalTo(1) + .limitWhenPresent(null) + .build() + .render(RenderingStrategies.SPRING_NAMED_PARAMETER); + + assertThat(updateStatement.getUpdateStatement()).isEqualTo("update AnimalData set id = :p1"); + } + + @Test + void testOptionalLimitOnUpdateWithWhere() { + var updateStatement = update(animalData) + .set(id).equalTo(1) + .where(id, isLessThan(22)) + .limitWhenPresent(null) + .build() + .render(RenderingStrategies.SPRING_NAMED_PARAMETER); + + assertThat(updateStatement.getUpdateStatement()).isEqualTo("update AnimalData set id = :p1 where id < :p2"); + } + + @Test + void testOptionalLimitOnSelect() { + var selectStatement = select(animalData.allColumns()) + .from(animalData) + .limitWhenPresent(null) + .build() + .render(RenderingStrategies.SPRING_NAMED_PARAMETER); + + assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData"); + } + + @Test + void testOptionalOffsetOnSelect() { + var selectStatement = select(animalData.allColumns()) + .from(animalData) + .offsetWhenPresent(null) + .build() + .render(RenderingStrategies.SPRING_NAMED_PARAMETER); + + assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData"); + } + + @Test + void testOptionalFetchFirstOnSelect() { + var selectStatement = select(animalData.allColumns()) + .from(animalData) + .fetchFirstWhenPresent(null).rowsOnly() + .build() + .render(RenderingStrategies.SPRING_NAMED_PARAMETER); + + assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData"); + } + + @Test + void testOptionalLimitAndOffsetOnSelect() { + var selectStatement = select(animalData.allColumns()) + .from(animalData) + .limitWhenPresent(null) + .offsetWhenPresent(null) + .build() + .render(RenderingStrategies.SPRING_NAMED_PARAMETER); + + assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData"); + } + + @Test + void testOptionalOffsetAndFetchOnSelect() { + var selectStatement = select(animalData.allColumns()) + .from(animalData) + .offsetWhenPresent(null) + .fetchFirstWhenPresent(null).rowsOnly() + .build() + .render(RenderingStrategies.SPRING_NAMED_PARAMETER); + + assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData"); + } +} diff --git a/src/test/java/issues/gh100/FromGroupByTest.java b/src/test/java/issues/gh100/FromGroupByTest.java index 65b095f68..64fd15a04 100644 --- a/src/test/java/issues/gh100/FromGroupByTest.java +++ b/src/test/java/issues/gh100/FromGroupByTest.java @@ -105,7 +105,7 @@ void testFromGroupByLimitB3() { QueryExpressionDSL.GroupByFinisher builder2 = builder1.groupBy(StudentDynamicSqlSupport.name); - SelectDSL.LimitFinisher builder3 = builder2.limit(3); + var builder3 = builder2.limit(3); String expected = "select name, count(*)" + " from student" @@ -162,7 +162,7 @@ void testFromGroupByOffsetB3() { QueryExpressionDSL.GroupByFinisher builder2 = builder1.groupBy(StudentDynamicSqlSupport.name); - SelectDSL.OffsetFirstFinisher builder3 = builder2.offset(3); + var builder3 = builder2.offset(3); String expected = "select name, count(*)" + " from student" @@ -219,7 +219,7 @@ void testFromGroupByFetchFirstB3() { QueryExpressionDSL.GroupByFinisher builder2 = builder1.groupBy(StudentDynamicSqlSupport.name); - SelectDSL.RowsOnlyFinisher builder3 = builder2.fetchFirst(2).rowsOnly(); + var builder3 = builder2.fetchFirst(2).rowsOnly(); String expected = "select name, count(*)" + " from student" @@ -363,7 +363,7 @@ void testFromGroupByOrderByOffsetB4() { SelectDSL builder3 = builder2.orderBy(StudentDynamicSqlSupport.name); - SelectDSL.OffsetFirstFinisher builder4 = builder3.offset(2); + var builder4 = builder3.offset(2); String expected = "select name, count(*)" + " from student" diff --git a/src/test/java/issues/gh100/FromJoinWhereTest.java b/src/test/java/issues/gh100/FromJoinWhereTest.java index 651580e95..47867128d 100644 --- a/src/test/java/issues/gh100/FromJoinWhereTest.java +++ b/src/test/java/issues/gh100/FromJoinWhereTest.java @@ -793,7 +793,7 @@ void testFromJoinWhereUnionOrderByLimitB6() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder6 = builder5.limit(3); + var builder6 = builder5.limit(3); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -826,7 +826,7 @@ void testFromJoinWhereUnionOrderByLimitOffsetB1() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder6 = builder5.limit(3); + var builder6 = builder5.limit(3); builder6.offset(2); @@ -862,7 +862,7 @@ void testFromJoinWhereUnionOrderByLimitOffsetB2() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder6 = builder5.limit(3); + var builder6 = builder5.limit(3); builder6.offset(2); @@ -898,7 +898,7 @@ void testFromJoinWhereUnionOrderByLimitOffsetB3() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder6 = builder5.limit(3); + var builder6 = builder5.limit(3); builder6.offset(2); @@ -934,7 +934,7 @@ void testFromJoinWhereUnionOrderByLimitOffsetB4() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder6 = builder5.limit(3); + var builder6 = builder5.limit(3); builder6.offset(2); @@ -970,7 +970,7 @@ void testFromJoinWhereUnionOrderByLimitOffsetB5() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder6 = builder5.limit(3); + var builder6 = builder5.limit(3); builder6.offset(2); @@ -1006,7 +1006,7 @@ void testFromJoinWhereUnionOrderByLimitOffsetB6() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder6 = builder5.limit(3); + var builder6 = builder5.limit(3); builder6.offset(2); @@ -1042,9 +1042,9 @@ void testFromJoinWhereUnionOrderByLimitOffsetB7() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder6 = builder5.limit(3); + var builder6 = builder5.limit(3); - SelectDSL.OffsetFinisher builder7 = builder6.offset(2); + var builder7 = builder6.offset(2); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -1248,7 +1248,7 @@ void testFromJoinWhereUnionOrderByOffsetB6() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -1282,7 +1282,7 @@ void testFromJoinWhereUnionOrderByOffsetFetchFirstB1() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); builder6.fetchFirst(3).rowsOnly(); @@ -1318,7 +1318,7 @@ void testFromJoinWhereUnionOrderByOffsetFetchFirstB2() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); builder6.fetchFirst(3).rowsOnly(); @@ -1354,7 +1354,7 @@ void testFromJoinWhereUnionOrderByOffsetFetchFirstB3() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); builder6.fetchFirst(3).rowsOnly(); @@ -1390,7 +1390,7 @@ void testFromJoinWhereUnionOrderByOffsetFetchFirstB4() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); builder6.fetchFirst(3).rowsOnly(); @@ -1426,7 +1426,7 @@ void testFromJoinWhereUnionOrderByOffsetFetchFirstB5() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); builder6.fetchFirst(3).rowsOnly(); @@ -1462,7 +1462,7 @@ void testFromJoinWhereUnionOrderByOffsetFetchFirstB6() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); builder6.fetchFirst(3).rowsOnly(); @@ -1498,9 +1498,9 @@ void testFromJoinWhereUnionOrderByOffsetFetchFirstB7() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); - SelectDSL.RowsOnlyFinisher builder7 = builder6.fetchFirst(3).rowsOnly(); + var builder7 = builder6.fetchFirst(3).rowsOnly(); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -1699,7 +1699,7 @@ void testFromJoinWhereUnionOrderByFetchFirstB6() { SelectDSL builder5 = builder4.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.RowsOnlyFinisher builder6 = builder5.fetchFirst(3).rowsOnly(); + var builder6 = builder5.fetchFirst(3).rowsOnly(); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -1850,7 +1850,7 @@ void testFromJoinWhereUnionLimitB5() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -1880,7 +1880,7 @@ void testFromJoinWhereUnionLimitOffsetB1() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -1913,7 +1913,7 @@ void testFromJoinWhereUnionLimitOffsetB2() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -1946,7 +1946,7 @@ void testFromJoinWhereUnionLimitOffsetB3() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -1979,7 +1979,7 @@ void testFromJoinWhereUnionLimitOffsetB4() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -2012,7 +2012,7 @@ void testFromJoinWhereUnionLimitOffsetB5() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -2045,9 +2045,9 @@ void testFromJoinWhereUnionLimitOffsetB6() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); - SelectDSL.OffsetFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -2198,7 +2198,7 @@ void testFromJoinWhereUnionOffsetB5() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -2228,7 +2228,7 @@ void testFromJoinWhereUnionOffsetFetchFirstB1() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(2).rowsOnly(); @@ -2261,7 +2261,7 @@ void testFromJoinWhereUnionOffsetFetchFirstB2() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(2).rowsOnly(); @@ -2294,7 +2294,7 @@ void testFromJoinWhereUnionOffsetFetchFirstB3() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(2).rowsOnly(); @@ -2327,7 +2327,7 @@ void testFromJoinWhereUnionOffsetFetchFirstB4() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(2).rowsOnly(); @@ -2360,7 +2360,7 @@ void testFromJoinWhereUnionOffsetFetchFirstB5() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(2).rowsOnly(); @@ -2393,9 +2393,9 @@ void testFromJoinWhereUnionOffsetFetchFirstB6() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); - SelectDSL.RowsOnlyFinisher builder6 = builder5.fetchFirst(2).rowsOnly(); + var builder6 = builder5.fetchFirst(2).rowsOnly(); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -2546,7 +2546,7 @@ void testFromJoinWhereUnionFetchFirstB5() { .select(StudentDynamicSqlSupport.id, StudentDynamicSqlSupport.name, StudentDynamicSqlSupport.idcard) .from(StudentDynamicSqlSupport.student); - SelectDSL.RowsOnlyFinisher builder5 = builder4.fetchFirst(2).rowsOnly(); + var builder5 = builder4.fetchFirst(2).rowsOnly(); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -2770,7 +2770,7 @@ void testFromJoinWhereOrderByLimitB5() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -2796,7 +2796,7 @@ void testFromJoinWhereOrderByLimitOffsetB1() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -2825,7 +2825,7 @@ void testFromJoinWhereOrderByLimitOffsetB2() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -2854,7 +2854,7 @@ void testFromJoinWhereOrderByLimitOffsetB3() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -2883,7 +2883,7 @@ void testFromJoinWhereOrderByLimitOffsetB4() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -2912,7 +2912,7 @@ void testFromJoinWhereOrderByLimitOffsetB5() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); builder5.offset(2); @@ -2941,9 +2941,9 @@ void testFromJoinWhereOrderByLimitOffsetB6() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.LimitFinisher builder5 = builder4.limit(3); + var builder5 = builder4.limit(3); - SelectDSL.OffsetFinisher builder6 = builder5.offset(2); + var builder6 = builder5.offset(2); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -3074,7 +3074,7 @@ void testFromJoinWhereOrderByOffsetB5() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -3100,7 +3100,7 @@ void testFromJoinWhereOrderByOffsetFetchFirstB1() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(3).rowsOnly(); @@ -3129,7 +3129,7 @@ void testFromJoinWhereOrderByOffsetFetchFirstB2() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(3).rowsOnly(); @@ -3158,7 +3158,7 @@ void testFromJoinWhereOrderByOffsetFetchFirstB3() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(3).rowsOnly(); @@ -3187,7 +3187,7 @@ void testFromJoinWhereOrderByOffsetFetchFirstB4() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(3).rowsOnly(); @@ -3216,7 +3216,7 @@ void testFromJoinWhereOrderByOffsetFetchFirstB5() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); builder5.fetchFirst(3).rowsOnly(); @@ -3245,9 +3245,9 @@ void testFromJoinWhereOrderByOffsetFetchFirstB6() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.OffsetFirstFinisher builder5 = builder4.offset(2); + var builder5 = builder4.offset(2); - SelectDSL.RowsOnlyFinisher builder6 = builder5.fetchFirst(3).rowsOnly(); + var builder6 = builder5.fetchFirst(3).rowsOnly(); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -3378,7 +3378,7 @@ void testFromJoinWhereOrderByFetchFirstB5() { SelectDSL builder4 = builder3.orderBy(StudentDynamicSqlSupport.id); - SelectDSL.RowsOnlyFinisher builder5 = builder4.fetchFirst(3).rowsOnly(); + var builder5 = builder4.fetchFirst(3).rowsOnly(); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -3471,7 +3471,7 @@ void testFromJoinWhereLimitB4() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.LimitFinisher builder4 = builder3.limit(2); + var builder4 = builder3.limit(2); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -3494,7 +3494,7 @@ void testFromJoinWhereLimitOffsetB1() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.LimitFinisher builder4 = builder3.limit(2); + var builder4 = builder3.limit(2); builder4.offset(3); @@ -3520,7 +3520,7 @@ void testFromJoinWhereLimitOffsetB2() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.LimitFinisher builder4 = builder3.limit(2); + var builder4 = builder3.limit(2); builder4.offset(3); @@ -3546,7 +3546,7 @@ void testFromJoinWhereLimitOffsetB3() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.LimitFinisher builder4 = builder3.limit(2); + var builder4 = builder3.limit(2); builder4.offset(3); @@ -3572,7 +3572,7 @@ void testFromJoinWhereLimitOffsetB4() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.LimitFinisher builder4 = builder3.limit(2); + var builder4 = builder3.limit(2); builder4.offset(3); @@ -3598,9 +3598,9 @@ void testFromJoinWhereLimitOffsetB5() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.LimitFinisher builder4 = builder3.limit(2); + var builder4 = builder3.limit(2); - SelectDSL.OffsetFinisher builder5 = builder4.offset(3); + var builder5 = builder4.offset(3); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -3693,7 +3693,7 @@ void testFromJoinWhereOffsetB4() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.OffsetFirstFinisher builder4 = builder3.offset(3); + var builder4 = builder3.offset(3); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -3716,7 +3716,7 @@ void testFromJoinWhereOffsetFetchFirstB1() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.OffsetFirstFinisher builder4 = builder3.offset(3); + var builder4 = builder3.offset(3); builder4.fetchFirst(2).rowsOnly(); @@ -3742,7 +3742,7 @@ void testFromJoinWhereOffsetFetchFirstB2() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.OffsetFirstFinisher builder4 = builder3.offset(3); + var builder4 = builder3.offset(3); builder4.fetchFirst(2).rowsOnly(); @@ -3768,7 +3768,7 @@ void testFromJoinWhereOffsetFetchFirstB3() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.OffsetFirstFinisher builder4 = builder3.offset(3); + var builder4 = builder3.offset(3); builder4.fetchFirst(2).rowsOnly(); @@ -3794,7 +3794,7 @@ void testFromJoinWhereOffsetFetchFirstB4() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.OffsetFirstFinisher builder4 = builder3.offset(3); + var builder4 = builder3.offset(3); builder4.fetchFirst(2).rowsOnly(); @@ -3820,9 +3820,9 @@ void testFromJoinWhereOffsetFetchFirstB5() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.OffsetFirstFinisher builder4 = builder3.offset(3); + var builder4 = builder3.offset(3); - SelectDSL.RowsOnlyFinisher builder5 = builder4.fetchFirst(2).rowsOnly(); + var builder5 = builder4.fetchFirst(2).rowsOnly(); String expected = "select student.id, student.name, student.idcard" + " from student" @@ -3915,7 +3915,7 @@ void testFromJoinWhereFetchFirstB4() { QueryExpressionDSL.QueryExpressionWhereBuilder builder3 = builder2.where(StudentDynamicSqlSupport.idcard, isEqualTo("fred")); - SelectDSL.RowsOnlyFinisher builder4 = builder3.fetchFirst(2).rowsOnly(); + var builder4 = builder3.fetchFirst(2).rowsOnly(); String expected = "select student.id, student.name, student.idcard" + " from student"