http://trandent.com/article/etc/detail/773
아래는 내가 작성한 쿼리
<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이다.