티스토리 뷰

프로그래밍

[iBatis] 동적쿼리 사용

앙망 2012. 3. 19. 17:17

이슈

조회되는 테이블이 요청값에 따라 테이블을 동적으로 변경시켜야 한다.

문제발생

  • iBatis는 SQL-ID가 한번 실행되면 내부적으로 읽어온 결과의 metadata를 저장한다.
  • 다음번에 호출되었을 때 이미 캐쉬에 저장된 필드를 쿼리결과에서 찾는다.
  • 쿼리대상 테이블이 변경되어 테이블의 필드명이 metadata의 필드명과 일치하지 않는다. (에러발생)

해결책

statement의 attribute로 "remapResults=true"를 설정하면 metadata를 캐쉬하지 않는다.

<select id="os.osex006.list.data" parameterClass="osex006svo" resultClass="HashMap" remapResults="true">
SELECT *
  FROM $tbl_nm$
 WHERE SUBSTR (rcp_no, 0, 8) >= #fromdt# AND SUBSTR (rcp_no, 0, 8) <= #todt#
</select> 
댓글