반응형
Caused by: java.sql.BatchUpdateException: Duplicate entry '123212' for key 'PRIMARY'
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2055) ~[neositebatch.jar:na]
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1467) ~[neositebatch.jar:na]
위의 오류가 났다.
해결방안으로 아래처럼 MyBatisPagingItemReader를 사용할 때 유의하여 사용하면 된다.
<batch:reader>
<bean class="org.mybatis.spring.batch.MyBatisPagingItemReader">
<property name="sqlSessionFactory" ref="sqlSessionFactoryForMysql"/>
<property name="pageSize" value="100"/>
<property name="queryId"
value="xxx.xxx.xxx.xxxRepository.get블라블라"/>
</bean>
</batch:reader>
SELECT Query에서 MySQL이라면 LIMIT #{_skiprows}, #{_pagesize} 를 걸어줘야 한다.
읽어와서 페이징 단위로 자동으로 데이터를 가져오지 못한다는 점이다.
- _page: 읽을 페이지 수(0부터 시작)
- _pagesize: 페이지의 크기, 이를테면 리턴하는 로우 수
- _skiprows: _page 와 _pagesize의 결과
참고 : https://mybatis.github.io/spring/ko/batch.html
끝~
반응형
'OpenSource > Spring Batch' 카테고리의 다른 글
springbatch setting시 오류: Spring Boot plugin requires Gradle 5 (5.6.x only) or Gradle 6 (6.3 or later). The current version is Gradle 4.10.3 (0) | 2020.08.06 |
---|---|
Spring Boot + Spring Batch 분석_02 (0) | 2018.10.23 |
Spring Boot + Spring Batch 분석_01 (0) | 2018.10.12 |
SpringBatch 예제 (0) | 2018.09.12 |
Spring Batch 환경 셋팅 (0) | 2012.09.03 |