프로그래밍/스프링 & 스프링 부트

스프링 MyBatis foreach 여러개 다중 insert (list insert)

밍구몬 2019. 6. 21. 17:42

오라클 LIST INSERT

<insert id="insertAttach" parameterType="memberVO">
	<foreach item="item" index="index" collection="java.util.List" separator=" " open="INSERT ALL " close="SELECT * FROM DUAL">
	INTO attachments(id,passwd,name)
	VALUES (#{item.id},#{item.passwd},#{item.name})
	</foreach>
</insert>

오라클에서 foreach를 이용해 list값을 db에 집어 넣는 방법이다.

separator : 반복 문자열을 구분할 문자

item : 리스트 i번째의 값이다. item.변수명 으로 사용한다.

collection : 타입

open : foreach 문이 시작되기 전 추가될 문자

close : foreach 문이 끝날 때 추가될 문자

 

오라클의 경우 INSERT ALL을 통하여 여러개의 값을 집어 넣을 수 있다.

Mysql, MariaDB List INSERT

<insert id="insertWeather" parameterType="java.util.List">
	INSERT INTO weather_info
	VALUES
	<foreach item="item" index="index" collection="java.util.List" separator=" , ">
		(#{item.dateSeq},#{item.fcstDate},#{item.fcstTime},#{item.temperature})
	</foreach>
</insert>

mariadb나 mysql은 VALUES 뒤에 괄호로 묶어 컴마(',')로 구분해주면 된다.