Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
5847bb0
Update version to 3.0.0-SNAPSHOT
kazuki43zoo Sep 11, 2022
7e37765
Apply Spring 6, Spring Batch 5 and more
kazuki43zoo Sep 11, 2022
a193c03
Ignore Maven Enforcer Plugin on 3.x
kazuki43zoo Sep 11, 2022
5e6cb83
Change supporing Java version on 3.x CI
kazuki43zoo Sep 11, 2022
2d8f0c1
Merge pull request #717 from kazuki43zoo/gh-716
kazuki43zoo Sep 11, 2022
46ced34
Support cron job for Java CI on 3.x
kazuki43zoo Sep 11, 2022
a91ad81
Apply some specification changes of Spring Batch 5 on 3.x tests
kazuki43zoo Sep 25, 2022
e3ff4f3
Merge pull request #726 from kazuki43zoo/fix-ci-error-for-spring-batc…
kazuki43zoo Sep 25, 2022
789a832
Merge branch 'master' into 3.x
kazuki43zoo Sep 25, 2022
7d0d94b
Merge branch 'master' into 3.x
kazuki43zoo Oct 2, 2022
dc15206
Remove doJumpToPage method on MyBatisPagingItemReader
kazuki43zoo Nov 23, 2022
b77435b
Add @SpringBatchTest on spring batch integration tests
kazuki43zoo Nov 23, 2022
e41368e
Merge pull request #741 from kazuki43zoo/gh-739
kazuki43zoo Nov 23, 2022
15ba46e
Merge branch 'master' into 3.x
kazuki43zoo Nov 23, 2022
e915e1f
Compile with -parameters option
kazuki43zoo Nov 23, 2022
dbf5b5c
Merge pull request #743 from kazuki43zoo/gh-742
kazuki43zoo Nov 23, 2022
39602b1
Change to use maven.compiler.parameters
kazuki43zoo Nov 24, 2022
4ae3ea9
Merge pull request #744 from kazuki43zoo/gh-742
hazendaz Nov 24, 2022
367cd5a
Update to spring-framework 6.0.1
kazuki43zoo Nov 24, 2022
19ce875
Update to spring-batch 5.0.0
kazuki43zoo Nov 24, 2022
0681191
Merge pull request #748 from kazuki43zoo/gh-747
kazuki43zoo Nov 24, 2022
a1c328d
Add java.version=17 on 3.x
kazuki43zoo Nov 24, 2022
4c0a075
Merge pull request #749 from kazuki43zoo/javaversion.3.x
kazuki43zoo Nov 24, 2022
74a474b
Update to spring-framework 6.0.2
kazuki43zoo Nov 24, 2022
d445544
Merge pull request #751 from kazuki43zoo/gh-750
kazuki43zoo Nov 24, 2022
377e38e
Merge branch 'master' into 3.x
kazuki43zoo Nov 24, 2022
0e9d32e
Drop enforcer.skip
kazuki43zoo Nov 24, 2022
4165b87
Merge pull request #753 from kazuki43zoo/enforcer
kazuki43zoo Nov 25, 2022
6ce7d21
Prepare to merge to master for release 3.0.0
kazuki43zoo Nov 25, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ name: Java CI

on:
push:
branches-ignore:
- 'compatibility-check-spring6'
pull_request:

jobs:
Expand All @@ -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
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/coveralls.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ name: Coveralls

on:
push:
branches-ignore:
- 'compatibility-check-spring6'
pull_request:

jobs:
Expand All @@ -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'
Expand Down
47 changes: 0 additions & 47 deletions .github/workflows/support.yaml

This file was deleted.

48 changes: 43 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
</parent>

<artifactId>mybatis-spring</artifactId>
<version>2.1.0-SNAPSHOT</version>
<version>3.0.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>mybatis-spring</name>
Expand Down Expand Up @@ -104,14 +104,18 @@
<gcu.product>Spring</gcu.product>
<osgi.import>org.springframework.batch.*;resolution:=optional,*</osgi.import>
<osgi.dynamicImport>*</osgi.dynamicImport>
<java.version>17</java.version>

<mybatis.version>3.5.11</mybatis.version>
<spring.version>5.3.24</spring.version>
<spring-batch.version>4.3.7</spring-batch.version>
<spring.version>6.0.2</spring.version>
<spring-batch.version>5.0.0</spring-batch.version>
<module.name>org.mybatis.spring</module.name>

<junit.version>5.9.1</junit.version>

<!-- Keep this setting until mybatis-parent 37 official released -->
<maven.compiler.parameters>true</maven.compiler.parameters>

<!-- Reproducible Builds -->
<project.build.outputTimestamp>1757561022</project.build.outputTimestamp>
</properties>
Expand Down Expand Up @@ -297,13 +301,13 @@
<dependency>
<groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>
<version>1.3.3</version>
<version>2.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>4.0.4</version>
<version>6.0.0</version>
<scope>test</scope>
</dependency>

Expand Down Expand Up @@ -373,6 +377,40 @@
<name>Sonatype OSS Snapshots Repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>spring-milestone</id>
<name>Spring Milestone</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>spring-snapshot</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>spring-milestone</id>
<name>Spring Milestone</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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.");
Expand All @@ -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);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,4 @@ protected void doReadPage() {
results.addAll(sqlSessionTemplate.selectList(queryId, parameters));
}

@Override
protected void doJumpToPage(int itemIndex) {
// Not Implemented
}

}
8 changes: 5 additions & 3 deletions src/test/java/org/mybatis/spring/MyBatisSpringTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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");
Expand Down Expand Up @@ -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");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,13 @@
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;
import java.util.Map;

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;
Expand All @@ -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;

Expand All @@ -60,8 +59,8 @@ void setUp() {

@Test
void testZeroBatchResultShouldThrowException() {
List<Employee> employees = Arrays.asList(new Employee(), new Employee());
List<BatchResult> batchResults = Lists.emptyList();
Chunk<Employee> employees = Chunk.of(new Employee(), new Employee());
List<BatchResult> batchResults = Collections.emptyList();

given(mockSqlSessionTemplate.flushStatements()).willReturn(batchResults);

Expand All @@ -70,7 +69,7 @@ void testZeroBatchResultShouldThrowException() {

@Test
void testZeroUpdateCountShouldThrowException() {
List<Employee> employees = Arrays.asList(new Employee(), new Employee());
Chunk<Employee> employees = Chunk.of(new Employee(), new Employee());

BatchResult batchResult = new BatchResult(null, null);
batchResult.setUpdateCounts(new int[] { 1, 0 });
Expand All @@ -87,7 +86,7 @@ void testItemToParameterConverterIsDefault() {
this.writer.setStatementId("updateEmployee");

Employee employee = new Employee();
List<Employee> employees = Collections.singletonList(employee);
Chunk<Employee> employees = Chunk.of(employee);
writer.write(employees);

Mockito.verify(this.mockSqlSessionTemplate).update("updateEmployee", employee);
Expand All @@ -105,7 +104,7 @@ void testSetItemToParameterConverter() {
});

Employee employee = new Employee();
List<Employee> employees = Collections.singletonList(employee);
Chunk<Employee> employees = Chunk.of(employee);
writer.write(employees);

Map<String, Object> parameter = new HashMap<>();
Expand Down
12 changes: 5 additions & 7 deletions src/test/java/org/mybatis/spring/batch/SpringBatchTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -56,7 +54,7 @@ class SpringBatchTest {
@Test
@Transactional
void shouldDuplicateSalaryOfAllEmployees() throws Exception {
List<Employee> employees = new ArrayList<>();
Chunk<Employee> employees = new Chunk<>();
Employee employee = pagingNoNestedItemReader.read();
while (employee != null) {
employee.setSalary(employee.getSalary() * 2);
Expand All @@ -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<Employee> employees = new ArrayList<>();
Chunk<Employee> employees = new Chunk<>();
Employee employee = pagingNestedItemReader.read();
while (employee != null) {
employee.setSalary(employee.getSalary() * 2);
Expand All @@ -91,7 +89,7 @@ void checkPagingReadingWithNestedInResultMap() throws Exception {
void checkCursorReadingWithoutNestedInResultMap() throws Exception {
cursorNoNestedItemReader.doOpen();
try {
List<Employee> employees = new ArrayList<>();
Chunk<Employee> employees = new Chunk<>();
Employee employee = cursorNoNestedItemReader.read();
while (employee != null) {
employee.setSalary(employee.getSalary() * 2);
Expand All @@ -112,7 +110,7 @@ void checkCursorReadingWithoutNestedInResultMap() throws Exception {
void checkCursorReadingWithNestedInResultMap() throws Exception {
cursorNestedItemReader.doOpen();
try {
List<Employee> employees = new ArrayList<>();
Chunk<Employee> employees = new Chunk<>();
Employee employee = cursorNestedItemReader.read();
while (employee != null) {
employee.setSalary(employee.getSalary() * 2);
Expand Down
Loading