MyBatis
MyBatis 마이바티스 MySQL 일괄 insert, 다중 insert / <foreach>
JM_H
2023. 4. 23. 15:07
어떤 특정 기능에서 특정 테이블에 여러개의 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 등 여러 자료형 사용 가능 */