diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 5502c5b32b..ed83d5edd7 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -18,8 +18,6 @@ name: Java CI
on:
push:
- branches-ignore:
- - 'compatibility-check-spring6'
pull_request:
jobs:
@@ -28,7 +26,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest]
- java: [11, 17, 19, 20-ea]
+ java: [17, 19, 20-ea]
distribution: ['zulu']
fail-fast: false
max-parallel: 5
diff --git a/.github/workflows/coveralls.yaml b/.github/workflows/coveralls.yaml
index b898488c1f..ac387747b0 100644
--- a/.github/workflows/coveralls.yaml
+++ b/.github/workflows/coveralls.yaml
@@ -18,8 +18,6 @@ name: Coveralls
on:
push:
- branches-ignore:
- - 'compatibility-check-spring6'
pull_request:
jobs:
@@ -31,7 +29,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v3
with:
- java-version: 11
+ java-version: 17
distribution: zulu
- name: Report Coverage to Coveralls for Pull Requests
if: github.event_name == 'pull_request'
diff --git a/.github/workflows/support.yaml b/.github/workflows/support.yaml
deleted file mode 100644
index 5be3956bd3..0000000000
--- a/.github/workflows/support.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# Copyright 2010-2022 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
-#
-# http://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.
-#
-
-name: Spring/Spring Batch Support
-
-on:
- push:
- branches-ignore:
- - 'compatibility-check-spring6'
- pull_request:
-
-jobs:
- test:
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- os: [ubuntu-latest, macOS-latest]
- java: [11]
- distribution: ['zulu']
- fail-fast: false
- max-parallel: 2
- name: Test JDK ${{ matrix.java }}, ${{ matrix.os }}
-
- steps:
- - uses: actions/checkout@v3
- - name: Set up JDK
- uses: actions/setup-java@v3
- with:
- java-version: ${{ matrix.java }}
- distribution: ${{ matrix.distribution }}
- - name: Test with Spring 5.2 / Spring Batch 4.2 support
- run: ./mvnw test -Dspring.version=$(./scripts/get_latest_version.sh spring-core 5.2) -Dspring-batch.version=$(./scripts/get_latest_version.sh batch/spring-batch-core 4.2)
- - name: Test with Spring 5.1 / Spring Batch 4.1 support
- run: ./mvnw test -Dspring.version=$(./scripts/get_latest_version.sh spring-core 5.1) -Dspring-batch.version=$(./scripts/get_latest_version.sh batch/spring-batch-core 4.1)
diff --git a/pom.xml b/pom.xml
index 9e6bc01253..aa9e9830e5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
mybatis-spring
- 2.1.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
jar
mybatis-spring
@@ -104,14 +104,18 @@
Spring
org.springframework.batch.*;resolution:=optional,*
*
+ 17
3.5.11
- 5.3.24
- 4.3.7
+ 6.0.2
+ 5.0.0
org.mybatis.spring
5.9.1
+
+ true
+
1757561022
@@ -297,13 +301,13 @@
jakarta.transaction
jakarta.transaction-api
- 1.3.3
+ 2.0.1
test
jakarta.servlet
jakarta.servlet-api
- 4.0.4
+ 6.0.0
test
@@ -373,6 +377,40 @@
Sonatype OSS Snapshots Repository
https://oss.sonatype.org/content/repositories/snapshots
+
+ spring-snapshot
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ false
+
+
+
+ spring-milestone
+ Spring Milestone
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+ spring-snapshot
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ false
+
+
+
+ spring-milestone
+ Spring Milestone
+ https://repo.spring.io/milestone
+
+ false
+
+
+
diff --git a/src/main/java/org/mybatis/spring/batch/MyBatisBatchItemWriter.java b/src/main/java/org/mybatis/spring/batch/MyBatisBatchItemWriter.java
index 8eeca0d7a8..42118df358 100644
--- a/src/main/java/org/mybatis/spring/batch/MyBatisBatchItemWriter.java
+++ b/src/main/java/org/mybatis/spring/batch/MyBatisBatchItemWriter.java
@@ -27,6 +27,7 @@
import org.mybatis.logging.Logger;
import org.mybatis.logging.LoggerFactory;
import org.mybatis.spring.SqlSessionTemplate;
+import org.springframework.batch.item.Chunk;
import org.springframework.batch.item.ItemWriter;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.convert.converter.Converter;
@@ -136,7 +137,7 @@ public void afterPropertiesSet() {
* {@inheritDoc}
*/
@Override
- public void write(final List extends T> items) {
+ public void write(final Chunk extends T> items) {
if (!items.isEmpty()) {
LOGGER.debug(() -> "Executing batch with " + items.size() + " items.");
@@ -158,8 +159,8 @@ public void write(final List extends T> items) {
for (int i = 0; i < updateCounts.length; i++) {
int value = updateCounts[i];
if (value == 0) {
- throw new EmptyResultDataAccessException(
- "Item " + i + " of " + updateCounts.length + " did not update any rows: [" + items.get(i) + "]", 1);
+ throw new EmptyResultDataAccessException("Item " + i + " of " + updateCounts.length
+ + " did not update any rows: [" + items.getItems().get(i) + "]", 1);
}
}
}
diff --git a/src/main/java/org/mybatis/spring/batch/MyBatisPagingItemReader.java b/src/main/java/org/mybatis/spring/batch/MyBatisPagingItemReader.java
index 6c96b345dc..c459c39c59 100644
--- a/src/main/java/org/mybatis/spring/batch/MyBatisPagingItemReader.java
+++ b/src/main/java/org/mybatis/spring/batch/MyBatisPagingItemReader.java
@@ -130,9 +130,4 @@ protected void doReadPage() {
results.addAll(sqlSessionTemplate.selectList(queryId, parameters));
}
- @Override
- protected void doJumpToPage(int itemIndex) {
- // Not Implemented
- }
-
}
diff --git a/src/test/java/org/mybatis/spring/MyBatisSpringTest.java b/src/test/java/org/mybatis/spring/MyBatisSpringTest.java
index b43bd579f0..2b5f43f5d5 100644
--- a/src/test/java/org/mybatis/spring/MyBatisSpringTest.java
+++ b/src/test/java/org/mybatis/spring/MyBatisSpringTest.java
@@ -19,7 +19,6 @@
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.fail;
-import com.mockrunner.mock.ejb.MockUserTransaction;
import com.mockrunner.mock.jdbc.MockConnection;
import com.mockrunner.mock.jdbc.MockDataSource;
import com.mockrunner.mock.jdbc.MockPreparedStatement;
@@ -32,12 +31,15 @@
import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.TransientDataAccessResourceException;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.jta.JtaTransactionManager;
import org.springframework.transaction.support.DefaultTransactionDefinition;
+import jakarta.transaction.UserTransaction;
+
class MyBatisSpringTest extends AbstractMyBatisSpringTest {
private SqlSession session;
@@ -275,7 +277,7 @@ void testChangeExecutorTypeInTxRequiresNew() throws Exception {
@Test
void testWithJtaTxManager() {
- JtaTransactionManager jtaManager = new JtaTransactionManager(new MockUserTransaction());
+ JtaTransactionManager jtaManager = new JtaTransactionManager(Mockito.mock(UserTransaction.class));
DefaultTransactionDefinition txDef = new DefaultTransactionDefinition();
txDef.setPropagationBehaviorName("PROPAGATION_REQUIRED");
@@ -304,7 +306,7 @@ void testWithJtaTxManagerAndNonSpringTxManager() throws java.sql.SQLException {
Environment nonSpring = new Environment("non-spring", new ManagedTransactionFactory(), mockDataSource);
sqlSessionFactory.getConfiguration().setEnvironment(nonSpring);
- JtaTransactionManager jtaManager = new JtaTransactionManager(new MockUserTransaction());
+ JtaTransactionManager jtaManager = new JtaTransactionManager(Mockito.mock(UserTransaction.class));
DefaultTransactionDefinition txDef = new DefaultTransactionDefinition();
txDef.setPropagationBehaviorName("PROPAGATION_REQUIRED");
diff --git a/src/test/java/org/mybatis/spring/batch/MyBatisBatchItemWriterTest.java b/src/test/java/org/mybatis/spring/batch/MyBatisBatchItemWriterTest.java
index a3a5366f33..ad11afbc09 100644
--- a/src/test/java/org/mybatis/spring/batch/MyBatisBatchItemWriterTest.java
+++ b/src/test/java/org/mybatis/spring/batch/MyBatisBatchItemWriterTest.java
@@ -22,7 +22,6 @@
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -30,7 +29,6 @@
import org.apache.ibatis.executor.BatchResult;
import org.apache.ibatis.session.ExecutorType;
-import org.assertj.core.util.Lists;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
@@ -39,6 +37,7 @@
import org.mockito.MockitoAnnotations;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.batch.domain.Employee;
+import org.springframework.batch.item.Chunk;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.dao.InvalidDataAccessResourceUsageException;
@@ -60,8 +59,8 @@ void setUp() {
@Test
void testZeroBatchResultShouldThrowException() {
- List employees = Arrays.asList(new Employee(), new Employee());
- List batchResults = Lists.emptyList();
+ Chunk employees = Chunk.of(new Employee(), new Employee());
+ List batchResults = Collections.emptyList();
given(mockSqlSessionTemplate.flushStatements()).willReturn(batchResults);
@@ -70,7 +69,7 @@ void testZeroBatchResultShouldThrowException() {
@Test
void testZeroUpdateCountShouldThrowException() {
- List employees = Arrays.asList(new Employee(), new Employee());
+ Chunk employees = Chunk.of(new Employee(), new Employee());
BatchResult batchResult = new BatchResult(null, null);
batchResult.setUpdateCounts(new int[] { 1, 0 });
@@ -87,7 +86,7 @@ void testItemToParameterConverterIsDefault() {
this.writer.setStatementId("updateEmployee");
Employee employee = new Employee();
- List employees = Collections.singletonList(employee);
+ Chunk employees = Chunk.of(employee);
writer.write(employees);
Mockito.verify(this.mockSqlSessionTemplate).update("updateEmployee", employee);
@@ -105,7 +104,7 @@ void testSetItemToParameterConverter() {
});
Employee employee = new Employee();
- List employees = Collections.singletonList(employee);
+ Chunk employees = Chunk.of(employee);
writer.write(employees);
Map parameter = new HashMap<>();
diff --git a/src/test/java/org/mybatis/spring/batch/SpringBatchTest.java b/src/test/java/org/mybatis/spring/batch/SpringBatchTest.java
index 5096c84623..c934a9b5d8 100644
--- a/src/test/java/org/mybatis/spring/batch/SpringBatchTest.java
+++ b/src/test/java/org/mybatis/spring/batch/SpringBatchTest.java
@@ -17,12 +17,10 @@
import static org.assertj.core.api.Assertions.*;
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;
import org.mybatis.spring.batch.domain.Employee;
+import org.springframework.batch.item.Chunk;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
@@ -56,7 +54,7 @@ class SpringBatchTest {
@Test
@Transactional
void shouldDuplicateSalaryOfAllEmployees() throws Exception {
- List employees = new ArrayList<>();
+ Chunk employees = new Chunk<>();
Employee employee = pagingNoNestedItemReader.read();
while (employee != null) {
employee.setSalary(employee.getSalary() * 2);
@@ -73,7 +71,7 @@ void shouldDuplicateSalaryOfAllEmployees() throws Exception {
@Transactional
void checkPagingReadingWithNestedInResultMap() throws Exception {
// This test is here to show that PagingReader can return wrong result in case of nested result maps
- List employees = new ArrayList<>();
+ Chunk employees = new Chunk<>();
Employee employee = pagingNestedItemReader.read();
while (employee != null) {
employee.setSalary(employee.getSalary() * 2);
@@ -91,7 +89,7 @@ void checkPagingReadingWithNestedInResultMap() throws Exception {
void checkCursorReadingWithoutNestedInResultMap() throws Exception {
cursorNoNestedItemReader.doOpen();
try {
- List employees = new ArrayList<>();
+ Chunk employees = new Chunk<>();
Employee employee = cursorNoNestedItemReader.read();
while (employee != null) {
employee.setSalary(employee.getSalary() * 2);
@@ -112,7 +110,7 @@ void checkCursorReadingWithoutNestedInResultMap() throws Exception {
void checkCursorReadingWithNestedInResultMap() throws Exception {
cursorNestedItemReader.doOpen();
try {
- List employees = new ArrayList<>();
+ Chunk employees = new Chunk<>();
Employee employee = cursorNestedItemReader.read();
while (employee != null) {
employee.setSalary(employee.getSalary() * 2);
diff --git a/src/test/java/org/mybatis/spring/batch/builder/MyBatisBatchItemWriterBuilderTest.java b/src/test/java/org/mybatis/spring/batch/builder/MyBatisBatchItemWriterBuilderTest.java
index f36c8678c4..e410c88931 100644
--- a/src/test/java/org/mybatis/spring/batch/builder/MyBatisBatchItemWriterBuilderTest.java
+++ b/src/test/java/org/mybatis/spring/batch/builder/MyBatisBatchItemWriterBuilderTest.java
@@ -37,6 +37,7 @@
import org.mockito.MockitoAnnotations;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.batch.MyBatisBatchItemWriter;
+import org.springframework.batch.item.Chunk;
/**
* Tests for {@link MyBatisBatchItemWriterBuilder}.
@@ -84,13 +85,13 @@ void testConfigurationUsingSqlSessionFactory() {
// @formatter:on
itemWriter.afterPropertiesSet();
- List foos = getFoos();
+ Chunk foos = getFoos();
itemWriter.write(foos);
- Mockito.verify(this.sqlSession).update("updateFoo", foos.get(0));
- Mockito.verify(this.sqlSession).update("updateFoo", foos.get(1));
- Mockito.verify(this.sqlSession).update("updateFoo", foos.get(2));
+ Mockito.verify(this.sqlSession).update("updateFoo", foos.getItems().get(0));
+ Mockito.verify(this.sqlSession).update("updateFoo", foos.getItems().get(1));
+ Mockito.verify(this.sqlSession).update("updateFoo", foos.getItems().get(2));
}
@@ -105,13 +106,13 @@ void testConfigurationUsingSqlSessionTemplate() {
// @formatter:on
itemWriter.afterPropertiesSet();
- List foos = getFoos();
+ Chunk foos = getFoos();
itemWriter.write(foos);
- Mockito.verify(this.sqlSession).update("updateFoo", foos.get(0));
- Mockito.verify(this.sqlSession).update("updateFoo", foos.get(1));
- Mockito.verify(this.sqlSession).update("updateFoo", foos.get(2));
+ Mockito.verify(this.sqlSession).update("updateFoo", foos.getItems().get(0));
+ Mockito.verify(this.sqlSession).update("updateFoo", foos.getItems().get(1));
+ Mockito.verify(this.sqlSession).update("updateFoo", foos.getItems().get(2));
}
@@ -129,13 +130,13 @@ void testConfigurationAssertUpdatesIsFalse() {
// @formatter:on
itemWriter.afterPropertiesSet();
- List foos = getFoos();
+ Chunk foos = getFoos();
itemWriter.write(foos);
- Mockito.verify(this.sqlSession).update("updateFoo", foos.get(0));
- Mockito.verify(this.sqlSession).update("updateFoo", foos.get(1));
- Mockito.verify(this.sqlSession).update("updateFoo", foos.get(2));
+ Mockito.verify(this.sqlSession).update("updateFoo", foos.getItems().get(0));
+ Mockito.verify(this.sqlSession).update("updateFoo", foos.getItems().get(1));
+ Mockito.verify(this.sqlSession).update("updateFoo", foos.getItems().get(2));
}
@@ -156,22 +157,22 @@ void testConfigurationSetItemToParameterConverter() {
// @formatter:on
itemWriter.afterPropertiesSet();
- List foos = getFoos();
+ Chunk foos = getFoos();
itemWriter.write(foos);
Map parameter = new HashMap<>();
parameter.put("now", LocalDateTime.now(Clock.fixed(Instant.ofEpochMilli(0), ZoneId.systemDefault())));
- parameter.put("item", foos.get(0));
+ parameter.put("item", foos.getItems().get(0));
Mockito.verify(this.sqlSession).update("updateFoo", parameter);
- parameter.put("item", foos.get(1));
+ parameter.put("item", foos.getItems().get(1));
Mockito.verify(this.sqlSession).update("updateFoo", parameter);
- parameter.put("item", foos.get(2));
+ parameter.put("item", foos.getItems().get(2));
Mockito.verify(this.sqlSession).update("updateFoo", parameter);
}
- private List getFoos() {
- return Arrays.asList(new Foo("foo1"), new Foo("foo2"), new Foo("foo3"));
+ private Chunk getFoos() {
+ return Chunk.of(new Foo("foo1"), new Foo("foo2"), new Foo("foo3"));
}
private static class Foo {
diff --git a/src/test/java/org/mybatis/spring/sample/AbstractSampleJobTest.java b/src/test/java/org/mybatis/spring/sample/AbstractSampleJobTest.java
index 389d0a6ede..8f17d16183 100644
--- a/src/test/java/org/mybatis/spring/sample/AbstractSampleJobTest.java
+++ b/src/test/java/org/mybatis/spring/sample/AbstractSampleJobTest.java
@@ -22,6 +22,7 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.test.JobLauncherTestUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -97,8 +98,10 @@ void testJob() throws Exception {
@Configuration
static class LocalContext {
@Bean
- JobLauncherTestUtils jobLauncherTestUtils() {
- return new JobLauncherTestUtils();
+ JobLauncherTestUtils jobLauncherTestUtils(Job job) {
+ JobLauncherTestUtils utils = new JobLauncherTestUtils();
+ utils.setJob(job);
+ return utils;
}
@Bean
diff --git a/src/test/java/org/mybatis/spring/sample/SampleJobJavaConfigTest.java b/src/test/java/org/mybatis/spring/sample/SampleJobJavaConfigTest.java
index 759d7a2d92..7f6c32c699 100644
--- a/src/test/java/org/mybatis/spring/sample/SampleJobJavaConfigTest.java
+++ b/src/test/java/org/mybatis/spring/sample/SampleJobJavaConfigTest.java
@@ -16,9 +16,11 @@
package org.mybatis.spring.sample;
import org.mybatis.spring.sample.config.SampleJobConfig;
+import org.springframework.batch.test.context.SpringBatchTest;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
@SpringJUnitConfig({ SampleJobConfig.class, AbstractSampleJobTest.LocalContext.class })
+@SpringBatchTest
class SampleJobJavaConfigTest extends AbstractSampleJobTest {
@Override
protected String getExpectedOperationBy() {
diff --git a/src/test/java/org/mybatis/spring/sample/SampleJobXmlConfigTest.java b/src/test/java/org/mybatis/spring/sample/SampleJobXmlConfigTest.java
index 461e9bf3c1..7dfe2f3691 100644
--- a/src/test/java/org/mybatis/spring/sample/SampleJobXmlConfigTest.java
+++ b/src/test/java/org/mybatis/spring/sample/SampleJobXmlConfigTest.java
@@ -15,11 +15,13 @@
*/
package org.mybatis.spring.sample;
+import org.springframework.batch.test.context.SpringBatchTest;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
@SpringJUnitConfig({ AbstractSampleJobTest.LocalContext.class, SampleJobXmlConfigTest.LocalContext.class })
+@SpringBatchTest
class SampleJobXmlConfigTest extends AbstractSampleJobTest {
@Override
diff --git a/src/test/java/org/mybatis/spring/sample/config/SampleJobConfig.java b/src/test/java/org/mybatis/spring/sample/config/SampleJobConfig.java
index 282c034c57..d951605dc9 100644
--- a/src/test/java/org/mybatis/spring/sample/config/SampleJobConfig.java
+++ b/src/test/java/org/mybatis/spring/sample/config/SampleJobConfig.java
@@ -34,9 +34,12 @@
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
-import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
-import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.batch.core.job.builder.JobBuilder;
+import org.springframework.batch.core.repository.JobRepository;
+import org.springframework.batch.core.step.builder.StepBuilder;
+import org.springframework.batch.item.ItemProcessor;
+import org.springframework.batch.item.ItemReader;
+import org.springframework.batch.item.ItemWriter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@@ -50,12 +53,6 @@
@EnableBatchProcessing
public class SampleJobConfig {
- @Autowired
- private JobBuilderFactory jobBuilderFactory;
-
- @Autowired
- private StepBuilderFactory stepBuilderFactory;
-
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL)
@@ -66,15 +63,15 @@ public DataSource dataSource() {
}
@Bean
- public PlatformTransactionManager transactionalManager() {
- return new DataSourceTransactionManager(dataSource());
+ public PlatformTransactionManager transactionManager(DataSource dataSource) {
+ return new DataSourceTransactionManager(dataSource);
}
@Bean
- public SqlSessionFactory sqlSessionFactory() throws Exception {
+ public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
PathMatchingResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
SqlSessionFactoryBean ss = new SqlSessionFactoryBean();
- ss.setDataSource(dataSource());
+ ss.setDataSource(dataSource);
ss.setMapperLocations(resourcePatternResolver.getResources("org/mybatis/spring/sample/mapper/*.xml"));
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setDefaultExecutorType(ExecutorType.BATCH);
@@ -83,10 +80,10 @@ public SqlSessionFactory sqlSessionFactory() throws Exception {
}
@Bean
- public MyBatisCursorItemReader reader() throws Exception {
+ public MyBatisCursorItemReader reader(SqlSessionFactory sqlSessionFactory) {
// @formatter:off
return new MyBatisCursorItemReaderBuilder()
- .sqlSessionFactory(sqlSessionFactory())
+ .sqlSessionFactory(sqlSessionFactory)
.queryId("org.mybatis.spring.sample.mapper.UserMapper.getUsers")
.build();
// @formatter:on
@@ -98,10 +95,10 @@ public UserToPersonItemProcessor processor() {
}
@Bean
- public MyBatisBatchItemWriter writer() throws Exception {
+ public MyBatisBatchItemWriter writer(SqlSessionFactory sqlSessionFactory) {
// @formatter:off
return new MyBatisBatchItemWriterBuilder()
- .sqlSessionFactory(sqlSessionFactory())
+ .sqlSessionFactory(sqlSessionFactory)
.statementId("org.mybatis.spring.sample.mapper.PersonMapper.createPerson")
.itemToParameterConverter(createItemToParameterMapConverter("batch_java_config_user", LocalDateTime.now()))
.build();
@@ -120,24 +117,24 @@ public static Converter> createItemToParameterMapConv
}
@Bean
- public Job importUserJob() throws Exception {
+ public Job importUserJob(JobRepository jobRepository, Step step1) {
// @formatter:off
- return jobBuilderFactory.get("importUserJob")
- .flow(step1())
+ return new JobBuilder("importUserJob", jobRepository)
+ .flow(step1)
.end()
.build();
// @formatter:on
}
@Bean
- public Step step1() throws Exception {
+ public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager, ItemReader reader,
+ ItemProcessor processor, ItemWriter writer) {
// @formatter:off
- return stepBuilderFactory.get("step1")
- .transactionManager(transactionalManager())
- .chunk(10)
- .reader(reader())
- .processor(processor())
- .writer(writer())
+ return new StepBuilder("step1", jobRepository)
+ .chunk(10, transactionManager)
+ .reader(reader)
+ .processor(processor)
+ .writer(writer)
.build();
// @formatter:on
}
diff --git a/src/test/java/org/mybatis/spring/submitted/xa/UserServiceTest.java b/src/test/java/org/mybatis/spring/submitted/xa/UserServiceTest.java
index 06e7c6e1f2..0aeeac48b7 100644
--- a/src/test/java/org/mybatis/spring/submitted/xa/UserServiceTest.java
+++ b/src/test/java/org/mybatis/spring/submitted/xa/UserServiceTest.java
@@ -17,14 +17,16 @@
import static org.assertj.core.api.Assertions.assertThat;
-import javax.transaction.UserTransaction;
-
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
+import jakarta.transaction.UserTransaction;
+
+@Disabled("Yet not found OSS implementation that supported Jakarta EE 9+ APIs")
@ExtendWith(SpringExtension.class)
@SpringJUnitConfig(locations = "classpath:org/mybatis/spring/submitted/xa/applicationContext.xml")
class UserServiceTest {