ibatis 에서 ORACLE 의 INSERT ALL query 를 사용 / List 를 parameter 로 처리할 때
ibatis 의 Oracle db 의 INSERT ALL 사용 예제
사실 ibatis 는 요새 잘 안쓰는 듯 하지만, 그래도 기존의 프로그램(legacy program) 들은 잘 안바꾸는 경향이 있어서 또 쓰게 된다.여튼, insert all 을 사용하는데, 문법 에러가 몇번 났어서 그냥 적어놓는다. 주로 query 사이의 공간(space) 처리를 제대로 안해서 났다.
여기서는 parameter 를 List 로 넘기는데, List 의 item 이 A 라는 class 이고, A 가 ID, STATUS 를 가진 경우라면, 아래처럼 #[].ID# 와 같은 방식으로 접근 하면 된다.
<insert id="doBatch" parameterClass="java.util.List"> INSERT ALL <iterate conjunction=" "> INTO CDN_PURGE_ACTION ( ACTION_SEQ, ID, STATUS, PURGE_DATETIME ) VALUES ( ACTION_SEQ.NEXTVAL, #[].ID#, #[].STATUS#, CURRENT_TIMESTAMP ) </iterate> SELECT 1 FROM DUAL <!-- INSERT ALL requires SELECT subquery on ORACLE --> </insert>
댓글 없음:
댓글 쓰기