화면상에 특정 컬럼들의 리스트를 보여줘야하는 경우가 생겨서
다음과 같은 sqlmap을 작성했다.

<select id="getListByColumn">
  SELECT distinct $column$ FROM table_name;
</select>

그런데 이게 몇개의 컬럼의 리스트를 한 화면에서 보여주다보니 문제가 발생을 한다.
문제는 바로 전에 실행한 sqlmap에서의 parameter값을 result상에서 요청하여 에러를 발생시키는 것이었다.
원인이 무엇인지 알지 못하겠기에 이것저것 찍어보고 바꿔봐도 여전히 달라지는것이 없었다.
그러다가 select의 속성중에 remapResults라는 것이 있다는 걸 알았다. 이녀석은 해당 statement가 실행될 때마다 result값을 다시 만들어주는 것이다. 고로 앞서의 문제점에 대한 해결책이 되겠다.
결국 다음과 같이

<select id="getListByColumn" remapResults="true">
  SELECT distinct $column$ FROM table_name;
</select>


remapResults를 true로 만들면 해당 statement가 실행될때마다 result를 다시 만드므로 에러를 발생시키지 않게 된다.
Posted by 사각퉁

댓글을 달아 주세요

  1. keunseok 2007.08.08 16:07  댓글주소  수정/삭제  댓글쓰기

    글 마지막 부근 오타다... remapResults이라고 써야 할 부분에 resultResults를... 이렇게 되어 있네...
    근데 iBatis에 이런 기능이 있다는건 처음 알았네... 뭐에 써야 하는건지도 잘 모르겠지만서두 ^^

    • Favicon of https://evilimp.tistory.com BlogIcon 사각퉁 2007.08.08 16:33 신고  댓글주소  수정/삭제

      ㅎㅎㅎ 수정했습니다-_-/

      이게 쓰이는 상황은 뭐 저도 정확하게 이럴때! 라고는 말 못하겠는데 저는 어떤 테이블에 있는 컬럼들을 각 컬럼마다 리스트형태로 만들어서 화면에 뿌려야할 일이 있었거든요. 근데 이게 같은 result를 이용하다보니 엉키는 상황이 발생해서 찾아보니 이런게 있어서... :)