[컴][웹][자바] ibatis 에서 Oracle 의 insert all 사용하는 예제




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>





댓글 없음:

댓글 쓰기