본문 바로가기
개발/기타

Mybatis parameterType List foreach insert(Oracle, MySQL)

by 궁즉변 변즉통 통즉구 2022. 2. 21.
반응형

Mybatis에서 foreach를 사용해서 List를 Insert하는 방법

 

아래와 같이 리스트에 데이터를 담아서 넘기는 경우

List<TestVO> list = new ArrayList<>();
list.add(new TestVO(1));
list.add(new TestVO(2));
 
insert("namespace.listInsert", list);

 

Oracle 기준으로는 mybatis 쿼리를 아래와 같이 작성한다.

<insert id="listInsert" parameterType="java.util.List">
    <foreach collection="list" item="item" index="index" separator=" " open="INSERT ALL" close="SELECT * FROM DUAL">
    INTO MY_TABLE
          (
           NUM,
           DATE
           )
    VALUES
        (
            #{item.num},
            SYSDATE
        )
    </foreach>
</insert>

실행 쿼리는 아래와 같이 실행된다

INSERT ALL 
INTO MY_TABLE (NUM, DATE) VALUES (...) 
INTO MY_TABLE (NUM, DATE) VALUES (...) 
...
SELECT * FROM SYS.DUAL

 

MySQL DB같은 경우는 아래와 같이 작성한다

<insert id="listInsert" parameterType="java.util.List">
    INSERT INTO MY_TABLE
          (
           NUM,
           DATE
           )
    VALUES
    <foreach collection="list" item="item" index="index" separator=",">
        (
            #{item.num},
            SYSDATE
        )
    </foreach>
</insert>
반응형

댓글