어떤 특정 기능에서 특정 테이블에 여러개의 row를 insert 해야 하는 경우가 있을 수 있다.

 

이럴 때 반복문(for)을 사용하여 insert하려는 개수만큼 insert를 실행할 수도 있지만

 

MyBatis에서 제공하는 동적 SQL 기능 중 foreach를 통해서 일괄 처리가 가능하다.

 

그로 인해 네트워크 트래픽이 감소하고 데이터베이스 연산 횟수가 줄어들어 효율적이다.

 

(* 사용하는 데이터베이스 및  환경에 따라  성능의 차이가 있을 수 있으니 테스트 및 최적화가 필요)

 

 

/* list를 파라미터로 받아 활용한 예시 */

<insert id="exInsert" parameterType="java.util.List">
    INSERT INTO
                ex_table
                (
                column1,
                column2,
                column3
                )
         VALUES
    <foreach collection="list" item="item" separator=",">
                (
                #{item.property1},
                #{item.property2},
                #{item.property3}
                )
    </foreach>
</insert>


/* foreach에 Collection, 배열(Array), Map 등 여러 자료형 사용 가능 */

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기