전자정부 egov Spring batch에서 MyBatisPagingItemReader사용시 주의점 (무한루프 방지)
egov Spring batch에서 PagingItemReader사용시 주의점인데요.
쿼리에 페이징관련 설정이 추가되지 않으면 한참동안
무한에 가깝게 반복이 되게 되니 주의가 필요합니다.
query쪽 xml에서 페이징관련 맵핑 변수를 설정해야 합니다.
마이바티스의경우 #{_page} , #{_pagesize} , #{_skiprows}를 설정해 주어야 합니다.
참고로 VO에 정의가 없어도 자동으로 주입이 됩니다.
* HSQL (메모리 DB의 경우)
<select id="selectEmpList" parameterType="empVO" resultMap="empResult">
<![CDATA[
select EMP_NO, EMP_NAME, JOB, MGR, HIRE_DATE, SAL, COMM, DEPT_NO
from EMP
where 1 = 1
LIMIT #{_pagesize} OFFSET #{_skiprows} -- HSQL LIMIT OFFSET
* Mysql의 경우 (iBatis 사용)
<select id="getPagedCustomerCredits" resultMap="customerCreditResult">
select id, name, credit from customer order by id asc LIMIT #_skiprows#, #_pagesize#
</select>
* Oracle의 경우 (iBatis 사용)
<select id="getPagedCustomerCredits" resultMap="customerCreditResult">
select * from (
select * from (
select t.id, t.name, t.credit, ROWNUM ROWNUM_ from customer t order by id
)) where ROWNUM_ <![CDATA[ > ]]> ( #_page# * #_pagesize# )
) where ROWNUM <![CDATA[ <= ]]> #_pagesize#
</select>