mybatis 중복 제외 다중 insert하기 + foreach

코딩하는감자·2022년 4월 14일

http://trandent.com/article/etc/detail/773

https://smile-place.tistory.com/entry/SPRING-Mybatis%EC%97%90%EC%84%9C-%EB%8B%A4%EC%A4%91-insert%ED%95%98%EA%B8%B0

아래는 내가 작성한 쿼리

<insert id="insertAlarmReceiverForBatch" parameterType="map">
		INSERT INTO ALARM_RECEIVER
			(
			alarm_cd
			, alarm_mode
			, user_id
			)
		SELECT alarm_cd,
			alarm_mode,
			user_id
		FROM(
		<foreach item="receiver" collection="insertReceiverList" separator="UNION ALL ">
			SELECT #{receiver.alarm_cd} AS alarm_cd
				, #{receiver.alarm_mode} AS alarm_mode
				, #{receiver.user_id} AS user_id
			FROM DUAL
			WHERE NOT EXISTS (
				SELECT alarm_cd
				FROM ALARM_RECEIVER
				WHERE alarm_cd = #{receiver.alarm_cd}
				AND alarm_mode = #{receiver.alarm_mode}
				AND user_id = #{receiver.user_id}
			)
		</foreach>
		) A
	</insert>

collection="insertReceiverList" 에서 insertReceiverList 는 List<Map<String, String>> type이다.

profile
나는 말하는 감자다

0개의 댓글