어떤 특정 기능에서 특정 테이블에 여러개의 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 등 여러 자료형 사용 가능 */
'MyBatis' 카테고리의 다른 글
이클립스 마이바티스 매퍼 mapper xml DOCTYPE dtd 컴파일 에러 (어플리케이션 실행 및 쿼리 실행에 문제는 없는데 에러 떠 있는 경우) (3) | 2024.02.25 |
---|---|
MyBatis <choose> 마이바티스 choose / SQL INSERT or UPDATE 시 변수값이 null or ""(빈문자열) 일 때 기본값 세팅 (1) | 2023.07.29 |
MyBatis 마이바티스 변수 작성시 사용하는 ${} 와 #{} 차이점 (0) | 2023.03.11 |
MyBatis 마이바티스 MySQL UPDATE 누적 합계 (INT 자료형) (0) | 2023.02.11 |
MyBatis 마이바티스 주석 작성시 주의사항 (0) | 2023.01.21 |
최근댓글