JAVA·Spring

전자정부 egov Spring batch에서 MyBatisPagingItemReader사용시 주의점 (무한루프 방지)

무한열정 2017. 11. 28. 13:28

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>