728x90
반응형
아파치에서 iBatis는 현재 더이상 개발되고 있지 않다. 그러나 여전히 현업에서 사용되는 경우가 많은 것 같다. 현재는 구글로 옮겨서 myBatis로 진행되고 있다.
그렇기 때문에 모든 문법이 동일하진 않다. 특히 이번 글에서 다루는 <iterate>도 <foreach>로 바뀌었다.
List<String> list = new ArrayList<>();
list.add("test1");
list.add("test2");
Map<String, Object> sqlMap = new HashMap<>();
sqlMap.put("list", list);
// sqlMap을 해당 쿼리로 넘겨준다.
<SELECT id="selectList" parameterClass="java.util.Map" resultClass="java.util.HashMap">
SELECT * FROM TABLE1
WHERE
1=1
<isNotEmpty property="list">
<iterate prepend=" AND TABLE_NAME IN" property="list" open="(" close=")" conjunction=",">
#list[]#
</iterate>
</isNotEmpty>
</SELECT>
<iterate> 태그를 사용해서 리스트이 반복 작업을 순서대로 처리할 수 있다. 특히 IN절에 리스트 값을 넣을 때 사용할 수 있다.
[] 표시는 각 반복에서 객체 하나를 의미한다. conjunction 속성은 하나의 반복이 끝나고 다음 순번으로 가기 전 중간에 붙여지는 구분자이다.
prepend는 iterate 전체 문자열 맨 앞에 한 번 붙여지는 접두사 역할이고, open과 close는 각 반복 앞 뒤에 붙여지는 것이다.
결국 실제 쿼리를 확인해보면 아래와 같다.
SELECT * FROM TABLE1
WHERE
1=1
AND TABLE_NAME IN ("test1", "test2");
리스트를 반복문에 사용하는 방법을 알아보았다.
처음엔 복잡하다고 생각했는데 막상 정리하고 보니까 사용법만 익숙해진다면 그렇게 어렵지 않게 사용할 수 있을 거 같다. 사실 맨날 in 절에 리스트 사용하는 부분에서 막히고 다시 찾아보고 이게 반복돼서 정리해본 거... ㅎㅎ
iBatis 사용하는 게 아직까진 재밌다고 한다 ~~
728x90
반응형
댓글