diff --git a/CHANGELOG.md b/CHANGELOG.md
index d80d14ee3..de304acca 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
This log will detail notable changes to MyBatis Dynamic SQL. Full details are available on the GitHub milestone pages.
+## Release 2.0.0 - Unreleased
+
+The library now requires Java 17.
+
## Release 1.5.2 - June 3, 2024
This is a small maintenance release with the following changes:
diff --git a/README.md b/README.md
index 12dac83b3..a9172a1b3 100644
--- a/README.md
+++ b/README.md
@@ -80,4 +80,4 @@ The library test cases provide several complete examples of using the library in
## Requirements
-The library has no dependencies. Java 8 or higher is required.
+The library has no dependencies. Version 2.x requires Java 17. Version 1.8 requires Java 8.
diff --git a/pom.xml b/pom.xml
index 80746c98f..0da827e3b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
org.mybatis.dynamic-sql
mybatis-dynamic-sql
- 1.6.0-SNAPSHOT
+ 2.0.0-SNAPSHOT
MyBatis Dynamic SQL
MyBatis framework for generating dynamic SQL
@@ -57,8 +57,8 @@
17
- 8
- 5.10.3
+ 17
+ 5.10.2
5.1.2
checkstyle-override.xml
diff --git a/src/main/java/org/mybatis/dynamic/sql/insert/render/GeneralInsertRenderer.java b/src/main/java/org/mybatis/dynamic/sql/insert/render/GeneralInsertRenderer.java
index afc1d4b98..c5378b493 100644
--- a/src/main/java/org/mybatis/dynamic/sql/insert/render/GeneralInsertRenderer.java
+++ b/src/main/java/org/mybatis/dynamic/sql/insert/render/GeneralInsertRenderer.java
@@ -40,8 +40,7 @@ private GeneralInsertRenderer(Builder builder) {
public GeneralInsertStatementProvider render() {
FieldAndValueCollector collector = model.columnMappings()
.map(m -> m.accept(visitor))
- .filter(Optional::isPresent)
- .map(Optional::get)
+ .flatMap(Optional::stream)
.collect(FieldAndValueCollector.collect());
Validator.assertFalse(collector.isEmpty(), "ERROR.9"); //$NON-NLS-1$
diff --git a/src/main/java/org/mybatis/dynamic/sql/insert/render/InsertRenderer.java b/src/main/java/org/mybatis/dynamic/sql/insert/render/InsertRenderer.java
index 431b3df8f..443695c50 100644
--- a/src/main/java/org/mybatis/dynamic/sql/insert/render/InsertRenderer.java
+++ b/src/main/java/org/mybatis/dynamic/sql/insert/render/InsertRenderer.java
@@ -35,8 +35,7 @@ private InsertRenderer(Builder builder) {
public InsertStatementProvider render() {
FieldAndValueCollector collector = model.columnMappings()
.map(m -> m.accept(visitor))
- .filter(Optional::isPresent)
- .map(Optional::get)
+ .flatMap(Optional::stream)
.collect(FieldAndValueCollector.collect());
Validator.assertFalse(collector.isEmpty(), "ERROR.10"); //$NON-NLS-1$
diff --git a/src/main/java/org/mybatis/dynamic/sql/update/render/UpdateRenderer.java b/src/main/java/org/mybatis/dynamic/sql/update/render/UpdateRenderer.java
index 50397ee7f..c25a29ff9 100644
--- a/src/main/java/org/mybatis/dynamic/sql/update/render/UpdateRenderer.java
+++ b/src/main/java/org/mybatis/dynamic/sql/update/render/UpdateRenderer.java
@@ -85,8 +85,7 @@ private FragmentAndParameters calculateSetPhrase() {
"ERROR.18"); //$NON-NLS-1$
FragmentCollector fragmentCollector = fragmentsAndParameters.stream()
- .filter(Optional::isPresent)
- .map(Optional::get)
+ .flatMap(Optional::stream)
.collect(FragmentCollector.collect());
return toSetPhrase(fragmentCollector);
diff --git a/src/main/java/org/mybatis/dynamic/sql/where/render/CriterionRenderer.java b/src/main/java/org/mybatis/dynamic/sql/where/render/CriterionRenderer.java
index 6e3e13254..232b68c11 100644
--- a/src/main/java/org/mybatis/dynamic/sql/where/render/CriterionRenderer.java
+++ b/src/main/java/org/mybatis/dynamic/sql/where/render/CriterionRenderer.java
@@ -135,8 +135,7 @@ private FragmentAndParameters renderExists(ExistsCriterion criterion) {
private List renderSubCriteria(List subCriteria) {
return subCriteria.stream().map(this::renderAndOrCriteriaGroup)
- .filter(Optional::isPresent)
- .map(Optional::get)
+ .flatMap(Optional::stream)
.collect(Collectors.toList());
}
diff --git a/src/site/markdown/docs/conditions.md b/src/site/markdown/docs/conditions.md
index d5683f206..55a2e6617 100644
--- a/src/site/markdown/docs/conditions.md
+++ b/src/site/markdown/docs/conditions.md
@@ -267,7 +267,7 @@ any null or blank string, and you want to trim all strings. This can be accompli
.where(animalName, isIn(" Mouse", " ", null, "", "Musk shrew ")
.filter(Objects::nonNull)
.map(String::trim)
- .filter(st -> !st.isEmpty()))
+ .filter(not(String::isEmpty)))
.orderBy(id)
.build()
.render(RenderingStrategies.MYBATIS3);
@@ -284,7 +284,7 @@ public class MyInCondition {
return SqlBuilder.isIn(values)
.filter(Objects::nonNull)
.map(String::trim)
- .filter(st -> !st.isEmpty());
+ .filter(not(String::isEmpty));
}
}
```
diff --git a/src/test/java/examples/animal/data/MyInCondition.java b/src/test/java/examples/animal/data/MyInCondition.java
index 86035a838..65453997f 100644
--- a/src/test/java/examples/animal/data/MyInCondition.java
+++ b/src/test/java/examples/animal/data/MyInCondition.java
@@ -15,6 +15,8 @@
*/
package examples.animal.data;
+import static java.util.function.Predicate.not;
+
import java.util.Objects;
import org.mybatis.dynamic.sql.SqlBuilder;
@@ -25,6 +27,6 @@ public static IsIn isIn(String...values) {
return SqlBuilder.isIn(values)
.filter(Objects::nonNull)
.map((String::trim))
- .filter(st -> !st.isEmpty());
+ .filter(not(String::isEmpty));
}
}
diff --git a/src/test/java/examples/animal/data/OptionalConditionsWithPredicatesAnimalDataTest.java b/src/test/java/examples/animal/data/OptionalConditionsWithPredicatesAnimalDataTest.java
index 7dd1e131e..cff21a348 100644
--- a/src/test/java/examples/animal/data/OptionalConditionsWithPredicatesAnimalDataTest.java
+++ b/src/test/java/examples/animal/data/OptionalConditionsWithPredicatesAnimalDataTest.java
@@ -20,6 +20,7 @@
import static examples.animal.data.AnimalDataDynamicSqlSupport.bodyWeight;
import static examples.animal.data.AnimalDataDynamicSqlSupport.brainWeight;
import static examples.animal.data.AnimalDataDynamicSqlSupport.id;
+import static java.util.function.Predicate.not;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.mybatis.dynamic.sql.SqlBuilder.*;
@@ -484,7 +485,7 @@ void testValueStreamTransformer() {
.where(animalName, isIn(" Mouse", " ", null, "", "Musk shrew ")
.filter(Objects::nonNull)
.map(String::trim)
- .filter(st -> !st.isEmpty()))
+ .filter(not(String::isEmpty)))
.orderBy(id)
.build()
.render(RenderingStrategies.MYBATIS3);
diff --git a/src/test/java/examples/emptywhere/EmptyWhereTest.java b/src/test/java/examples/emptywhere/EmptyWhereTest.java
index 3f6d4a86e..8b3fdc546 100644
--- a/src/test/java/examples/emptywhere/EmptyWhereTest.java
+++ b/src/test/java/examples/emptywhere/EmptyWhereTest.java
@@ -56,12 +56,7 @@ static List baseVariations() {
Variation v4 = new Variation(null, null, "");
- List answer = new ArrayList<>();
- answer.add(v1);
- answer.add(v2);
- answer.add(v3);
- answer.add(v4);
- return answer;
+ return List.of(v1, v2, v3, v4);
}
static Stream whereVariations() {
diff --git a/src/test/java/examples/simple/MyBatisMapToRowTest.java b/src/test/java/examples/simple/MyBatisMapToRowTest.java
index f17bca807..2b6f714b2 100644
--- a/src/test/java/examples/simple/MyBatisMapToRowTest.java
+++ b/src/test/java/examples/simple/MyBatisMapToRowTest.java
@@ -109,10 +109,7 @@ void testInsertMultiple() {
try (SqlSession session = sqlSessionFactory.openSession()) {
CompoundKeyMapper mapper = session.getMapper(CompoundKeyMapper.class);
- List integers = new ArrayList<>();
- integers.add(1);
- integers.add(2);
- integers.add(3);
+ List integers = List.of(1, 2, 3);
MultiRowInsertStatementProvider insertStatement = insertMultiple(integers)
.into(compoundKey)
@@ -142,10 +139,7 @@ void testInsertBatch() {
try (SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
CompoundKeyMapper mapper = session.getMapper(CompoundKeyMapper.class);
- List integers = new ArrayList<>();
- integers.add(1);
- integers.add(2);
- integers.add(3);
+ List integers = List.of(1, 2, 3);
BatchInsert insertStatement = insertBatch(integers)
.into(compoundKey)
diff --git a/src/test/java/examples/simple/PersonMapperTest.java b/src/test/java/examples/simple/PersonMapperTest.java
index 05c47cd29..cb8a424ef 100644
--- a/src/test/java/examples/simple/PersonMapperTest.java
+++ b/src/test/java/examples/simple/PersonMapperTest.java
@@ -253,8 +253,7 @@ void testFirstNameIn() {
@Test
void testOrderByCollection() {
- Collection orderByColumns = new ArrayList<>();
- orderByColumns.add(firstName);
+ Collection orderByColumns = List.of(firstName);
try (SqlSession session = sqlSessionFactory.openSession()) {
PersonMapper mapper = session.getMapper(PersonMapper.class);
diff --git a/src/test/java/examples/spring/SpringMapToRowTest.java b/src/test/java/examples/spring/SpringMapToRowTest.java
index 91271b39f..c3b1077c9 100644
--- a/src/test/java/examples/spring/SpringMapToRowTest.java
+++ b/src/test/java/examples/spring/SpringMapToRowTest.java
@@ -74,10 +74,7 @@ void testInsertOne() {
@Test
void testInsertMultiple() {
- List integers = new ArrayList<>();
- integers.add(1);
- integers.add(2);
- integers.add(3);
+ List integers = List.of(1, 2, 3);
MultiRowInsertStatementProvider insertStatement = insertMultiple(integers)
.into(compoundKey)
@@ -102,10 +99,7 @@ void testInsertMultiple() {
@Test
void testInsertBatch() {
- List integers = new ArrayList<>();
- integers.add(1);
- integers.add(2);
- integers.add(3);
+ List integers = List.of(1, 2, 3);
BatchInsert insertStatement = insertBatch(integers)
.into(compoundKey)
diff --git a/src/test/java/issues/gh430/NoInitialConditionTest.java b/src/test/java/issues/gh430/NoInitialConditionTest.java
index b9104d43e..22f5c954c 100644
--- a/src/test/java/issues/gh430/NoInitialConditionTest.java
+++ b/src/test/java/issues/gh430/NoInitialConditionTest.java
@@ -19,7 +19,7 @@
import static org.mybatis.dynamic.sql.SqlBuilder.*;
import static org.mybatis.dynamic.sql.subselect.FooDynamicSqlSupport.*;
-import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
@@ -32,7 +32,7 @@ class NoInitialConditionTest {
@Test
void testNoInitialConditionEmptyList() {
- List criteria = new ArrayList<>();
+ List criteria = Collections.emptyList();
SelectStatementProvider selectStatement = buildSelectStatement(criteria);
@@ -43,8 +43,7 @@ void testNoInitialConditionEmptyList() {
@Test
void testNoInitialConditionSingleSub() {
- List criteria = new ArrayList<>();
- criteria.add(or(column2, isEqualTo(3)));
+ List criteria = List.of(or(column2, isEqualTo(3)));
SelectStatementProvider selectStatement = buildSelectStatement(criteria);
@@ -56,10 +55,10 @@ void testNoInitialConditionSingleSub() {
@Test
void testNoInitialConditionMultipleSubs() {
- List criteria = new ArrayList<>();
- criteria.add(or(column2, isEqualTo(3)));
- criteria.add(or(column2, isEqualTo(4)));
- criteria.add(or(column2, isEqualTo(5)));
+ List criteria = List.of(
+ or(column2, isEqualTo(3)),
+ or(column2, isEqualTo(4)),
+ or(column2, isEqualTo(5)));
SelectStatementProvider selectStatement = buildSelectStatement(criteria);
@@ -71,10 +70,10 @@ void testNoInitialConditionMultipleSubs() {
@Test
void testNoInitialConditionWhereMultipleSubs() {
- List criteria = new ArrayList<>();
- criteria.add(or(column2, isEqualTo(3)));
- criteria.add(or(column2, isEqualTo(4)));
- criteria.add(or(column2, isEqualTo(5)));
+ List criteria = List.of(
+ or(column2, isEqualTo(3)),
+ or(column2, isEqualTo(4)),
+ or(column2, isEqualTo(5)));
SelectStatementProvider selectStatement = select(column1, column2)
.from(foo)
@@ -90,10 +89,10 @@ void testNoInitialConditionWhereMultipleSubs() {
@Test
void testNoInitialConditionWhereNotMultipleSubs() {
- List criteria = new ArrayList<>();
- criteria.add(or(column2, isEqualTo(3)));
- criteria.add(or(column2, isEqualTo(4)));
- criteria.add(or(column2, isEqualTo(5)));
+ List criteria = List.of(
+ or(column2, isEqualTo(3)),
+ or(column2, isEqualTo(4)),
+ or(column2, isEqualTo(5)));
SelectStatementProvider selectStatement = select(column1, column2)
.from(foo)
@@ -110,10 +109,10 @@ void testNoInitialConditionWhereNotMultipleSubs() {
@Test
void testNoInitialConditionWhereGroupMultipleSubs() {
- List criteria = new ArrayList<>();
- criteria.add(or(column2, isEqualTo(3)));
- criteria.add(or(column2, isEqualTo(4)));
- criteria.add(or(column2, isEqualTo(5)));
+ List criteria = List.of(
+ or(column2, isEqualTo(3)),
+ or(column2, isEqualTo(4)),
+ or(column2, isEqualTo(5)));
SelectStatementProvider selectStatement = select(column1, column2)
.from(foo)
@@ -130,10 +129,10 @@ void testNoInitialConditionWhereGroupMultipleSubs() {
@Test
void testNoInitialConditionWhereCCAndMultipleSubs() {
- List criteria = new ArrayList<>();
- criteria.add(or(column2, isEqualTo(3)));
- criteria.add(or(column2, isEqualTo(4)));
- criteria.add(or(column2, isEqualTo(5)));
+ List criteria = List.of(
+ or(column2, isEqualTo(3)),
+ or(column2, isEqualTo(4)),
+ or(column2, isEqualTo(5)));
SelectStatementProvider selectStatement = select(column1, column2)
.from(foo)
@@ -149,10 +148,10 @@ void testNoInitialConditionWhereCCAndMultipleSubs() {
@Test
void testNoInitialConditionWhereCCOrMultipleSubs() {
- List criteria = new ArrayList<>();
- criteria.add(or(column2, isEqualTo(3)));
- criteria.add(or(column2, isEqualTo(4)));
- criteria.add(or(column2, isEqualTo(5)));
+ List criteria = List.of(
+ or(column2, isEqualTo(3)),
+ or(column2, isEqualTo(4)),
+ or(column2, isEqualTo(5)));
SelectStatementProvider selectStatement = select(column1, column2)
.from(foo)
@@ -168,10 +167,10 @@ void testNoInitialConditionWhereCCOrMultipleSubs() {
@Test
void testNoInitialConditionWhereOrMultipleSubs() {
- List criteria = new ArrayList<>();
- criteria.add(or(column2, isEqualTo(3)));
- criteria.add(or(column2, isEqualTo(4)));
- criteria.add(or(column2, isEqualTo(5)));
+ List criteria = List.of(
+ or(column2, isEqualTo(3)),
+ or(column2, isEqualTo(4)),
+ or(column2, isEqualTo(5)));
SelectStatementProvider selectStatement = select(column1, column2)
.from(foo)
diff --git a/src/test/java/org/mybatis/dynamic/sql/InvalidSQLTest.java b/src/test/java/org/mybatis/dynamic/sql/InvalidSQLTest.java
index 4c7afc0b0..155ccb9cf 100644
--- a/src/test/java/org/mybatis/dynamic/sql/InvalidSQLTest.java
+++ b/src/test/java/org/mybatis/dynamic/sql/InvalidSQLTest.java
@@ -115,8 +115,7 @@ void testInvalidMultipleInsertStatementNoRecords() {
@Test
void testInvalidMultipleInsertStatementNoMappings() {
- List records = new ArrayList<>();
- records.add(new TestRow());
+ List records = List.of(new TestRow());
MultiRowInsertModel.Builder builder = new MultiRowInsertModel.Builder()
.withRecords(records)
@@ -137,8 +136,7 @@ void testInvalidBatchInsertStatementNoRecords() {
@Test
void testInvalidBatchInsertStatementNoMappings() {
- List records = new ArrayList<>();
- records.add(new TestRow());
+ List records = List.of(new TestRow());
BatchInsertModel.Builder builder = new BatchInsertModel.Builder()
.withRecords(records)
diff --git a/src/test/java/org/mybatis/dynamic/sql/insert/MapToRowTest.java b/src/test/java/org/mybatis/dynamic/sql/insert/MapToRowTest.java
index cd4871f14..fc8c17ad5 100644
--- a/src/test/java/org/mybatis/dynamic/sql/insert/MapToRowTest.java
+++ b/src/test/java/org/mybatis/dynamic/sql/insert/MapToRowTest.java
@@ -20,7 +20,6 @@
import static org.mybatis.dynamic.sql.SqlBuilder.insertMultiple;
import java.sql.JDBCType;
-import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Test;
@@ -37,10 +36,10 @@ class MapToRowTest {
@Test
void testBasicInsertMultipleWithMyBatis() {
- List records = new ArrayList<>();
- records.add(new Record(33, 1));
- records.add(new Record(33, 2));
- records.add(new Record(33, 3));
+ List records = List.of(
+ new Record(33, 1),
+ new Record(33, 2),
+ new Record(33, 3));
MultiRowInsertStatementProvider insertStatement = insertMultiple(records)
.into(foo)
@@ -55,10 +54,10 @@ void testBasicInsertMultipleWithMyBatis() {
@Test
void testBasicInsertMultipleWithSpring() {
- List records = new ArrayList<>();
- records.add(new Record(33, 1));
- records.add(new Record(33, 2));
- records.add(new Record(33, 3));
+ List records = List.of(
+ new Record(33, 1),
+ new Record(33, 2),
+ new Record(33, 3));
MultiRowInsertStatementProvider insertStatement = insertMultiple(records)
.into(foo)
@@ -73,10 +72,7 @@ void testBasicInsertMultipleWithSpring() {
@Test
void testBasicInsertMultipleRowMappingWithMyBatis() {
- List integers = new ArrayList<>();
- integers.add(1);
- integers.add(2);
- integers.add(3);
+ List integers = List.of(1, 2, 3);
MultiRowInsertStatementProvider insertStatement = insertMultiple(integers)
.into(foo)
@@ -91,10 +87,7 @@ void testBasicInsertMultipleRowMappingWithMyBatis() {
@Test
void testBasicInsertMultipleRowMappingWithSpring() {
- List integers = new ArrayList<>();
- integers.add(1);
- integers.add(2);
- integers.add(3);
+ List integers = List.of(1, 2, 3);
MultiRowInsertStatementProvider insertStatement = insertMultiple(integers)
.into(foo)
@@ -109,10 +102,10 @@ void testBasicInsertMultipleRowMappingWithSpring() {
@Test
void testBatchInsertWithMyBatis() {
- List records = new ArrayList<>();
- records.add(new Record(33, 1));
- records.add(new Record(33, 2));
- records.add(new Record(33, 3));
+ List records = List.of(
+ new Record(33, 1),
+ new Record(33, 2),
+ new Record(33, 3));
BatchInsert batchInsert = insertBatch(records)
.into(foo)
@@ -127,10 +120,10 @@ void testBatchInsertWithMyBatis() {
@Test
void testBatchInsertWithSpring() {
- List records = new ArrayList<>();
- records.add(new Record(33, 1));
- records.add(new Record(33, 2));
- records.add(new Record(33, 3));
+ List records = List.of(
+ new Record(33, 1),
+ new Record(33, 2),
+ new Record(33, 3));
BatchInsert batchInsert = insertBatch(records)
.into(foo)
@@ -145,10 +138,7 @@ void testBatchInsertWithSpring() {
@Test
void testBatchInsertRowMappingWithMyBatis() {
- List integers = new ArrayList<>();
- integers.add(1);
- integers.add(2);
- integers.add(3);
+ List integers = List.of(1, 2, 3);
BatchInsert batchInsert = insertBatch(integers)
.into(foo)
@@ -163,10 +153,7 @@ void testBatchInsertRowMappingWithMyBatis() {
@Test
void testBatchInsertRowMappingWithSpring() {
- List integers = new ArrayList<>();
- integers.add(1);
- integers.add(2);
- integers.add(3);
+ List integers = List.of(1, 2, 3);
BatchInsert batchInsert = insertBatch(integers)
.into(foo)
diff --git a/src/test/java/org/mybatis/dynamic/sql/select/SelectStatementTest.java b/src/test/java/org/mybatis/dynamic/sql/select/SelectStatementTest.java
index 19832a415..f548a4d71 100644
--- a/src/test/java/org/mybatis/dynamic/sql/select/SelectStatementTest.java
+++ b/src/test/java/org/mybatis/dynamic/sql/select/SelectStatementTest.java
@@ -180,9 +180,7 @@ void testOrderByMultipleColumns() {
@Test
void testOrderByMultipleColumnsWithCollection() {
- Collection orderByColumns = new ArrayList<>();
- orderByColumns.add(column2.descending());
- orderByColumns.add(column1);
+ Collection orderByColumns = List.of(column2.descending(), column1);
SelectStatementProvider selectStatement = select(column1.as("A_COLUMN1"), column2)
.from(table, "a")