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")