diff --git a/build.gradle b/build.gradle index 0c49b5e179..c6b50a8813 100644 --- a/build.gradle +++ b/build.gradle @@ -50,7 +50,7 @@ allprojects { springVersionDefault = '5.3.0-SNAPSHOT' springVersion = project.hasProperty('springVersion') ? getProperty('springVersion') : springVersionDefault springRetryVersion = '1.2.5.RELEASE' - springAmqpVersion = '2.3.0.BUILD-SNAPSHOT' // TODO update to 2.3.0-SNAPSHOT when available + springAmqpVersion = '2.3.0-SNAPSHOT' springDataCommonsVersion = '2.4.0-SNAPSHOT' springDataGemfireVersion = '2.4.0-SNAPSHOT' springDataJpaVersion = '2.4.0-SNAPSHOT' diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/builder/JdbcCursorItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/builder/JdbcCursorItemReaderBuilder.java index 9d56869b1e..b3288e85b6 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/builder/JdbcCursorItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/builder/JdbcCursorItemReaderBuilder.java @@ -35,6 +35,7 @@ * @author Glenn Renfro * @author Drummond Dawson * @author Mahmoud Ben Hassine + * @author Ankur Trapasiya * @since 4.0 */ public class JdbcCursorItemReaderBuilder { @@ -69,6 +70,8 @@ public class JdbcCursorItemReaderBuilder { private int currentItemCount; + private boolean connectionAutoCommit; + /** * Configure if the state of the {@link org.springframework.batch.item.ItemStreamSupport} * should be persisted within the {@link org.springframework.batch.item.ExecutionContext} @@ -321,6 +324,20 @@ public JdbcCursorItemReaderBuilder beanRowMapper(Class mappedClass) { return this; } + /** + * Set whether "autoCommit" should be overridden for the connection used by the cursor. If not set, defaults to + * Connection / Datasource default configuration. + * + * @param connectionAutoCommit value to set on underlying JDBC connection + * @return this instance for method chaining + * @see JdbcCursorItemReader#setConnectionAutoCommit(boolean) + */ + public JdbcCursorItemReaderBuilder connectionAutoCommit(boolean connectionAutoCommit) { + this.connectionAutoCommit = connectionAutoCommit; + + return this; + } + /** * Validates configuration and builds a new reader instance. * @@ -356,6 +373,7 @@ public JdbcCursorItemReader build() { reader.setQueryTimeout(this.queryTimeout); reader.setUseSharedExtendedConnection(this.useSharedExtendedConnection); reader.setVerifyCursorPosition(this.verifyCursorPosition); + reader.setConnectionAutoCommit(this.connectionAutoCommit); return reader; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/builder/JdbcCursorItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/builder/JdbcCursorItemReaderBuilderTests.java index 24a0452db5..0b7890aaa0 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/builder/JdbcCursorItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/builder/JdbcCursorItemReaderBuilderTests.java @@ -302,6 +302,7 @@ public void testOtherProperties() { .ignoreWarnings(true) .driverSupportsAbsolute(true) .useSharedExtendedConnection(true) + .connectionAutoCommit(true) .beanRowMapper(Foo.class) .build(); @@ -309,6 +310,7 @@ public void testOtherProperties() { assertEquals(2, ReflectionTestUtils.getField(reader, "queryTimeout")); assertTrue((boolean) ReflectionTestUtils.getField(reader, "ignoreWarnings")); assertTrue((boolean) ReflectionTestUtils.getField(reader, "driverSupportsAbsolute")); + assertTrue((boolean) ReflectionTestUtils.getField(reader, "connectionAutoCommit")); } @Test