Skip to content

Commit f6d8faa

Browse files
author
Julien KLAER
committed
fix(paging item reader): Going through doOpen to initialize connection
instead of afterPropertiesSet
1 parent a72730b commit f6d8faa

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

src/main/java/org/mybatis/spring/batch/MyBatisPagingItemReader.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,17 @@
1515
*/
1616
package org.mybatis.spring.batch;
1717

18-
import static org.springframework.util.Assert.notNull;
19-
import static org.springframework.util.ClassUtils.getShortName;
18+
import org.apache.ibatis.session.ExecutorType;
19+
import org.apache.ibatis.session.SqlSession;
20+
import org.apache.ibatis.session.SqlSessionFactory;
21+
import org.springframework.batch.item.database.AbstractPagingItemReader;
2022

2123
import java.util.HashMap;
2224
import java.util.Map;
2325
import java.util.concurrent.CopyOnWriteArrayList;
2426

25-
import org.apache.ibatis.session.ExecutorType;
26-
import org.apache.ibatis.session.SqlSession;
27-
import org.apache.ibatis.session.SqlSessionFactory;
28-
import org.mybatis.spring.SqlSessionTemplate;
29-
import org.springframework.batch.item.database.AbstractPagingItemReader;
27+
import static org.springframework.util.Assert.notNull;
28+
import static org.springframework.util.ClassUtils.getShortName;
3029

3130
/**
3231
* {@code org.springframework.batch.item.ItemReader} for reading database
@@ -44,7 +43,7 @@ public class MyBatisPagingItemReader<T> extends AbstractPagingItemReader<T> {
4443

4544
private SqlSessionFactory sqlSessionFactory;
4645

47-
private SqlSessionTemplate sqlSessionTemplate;
46+
private SqlSession sqlSession;
4847

4948
private Map<String, Object> parameterValues;
5049

@@ -89,10 +88,23 @@ public void setParameterValues(Map<String, Object> parameterValues) {
8988
public void afterPropertiesSet() throws Exception {
9089
super.afterPropertiesSet();
9190
notNull(sqlSessionFactory, "A SqlSessionFactory is required.");
92-
sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH);
9391
notNull(queryId, "A queryId is required.");
9492
}
9593

94+
@Override
95+
protected void doOpen() throws Exception {
96+
super.doOpen();
97+
sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
98+
}
99+
100+
@Override
101+
protected void doClose() throws Exception {
102+
if (sqlSession != null) {
103+
sqlSession.close();
104+
}
105+
super.doClose();
106+
}
107+
96108
@Override
97109
protected void doReadPage() {
98110
Map<String, Object> parameters = new HashMap<>();
@@ -107,7 +119,7 @@ protected void doReadPage() {
107119
} else {
108120
results.clear();
109121
}
110-
results.addAll(sqlSessionTemplate.selectList(queryId, parameters));
122+
results.addAll(sqlSession.selectList(queryId, parameters));
111123
}
112124

113125
@Override

0 commit comments

Comments
 (0)