<insert id="insert" parameterType="java.util.ArrayList" useGeneratedKeys="false">
MERGE INTO TABLE_NAME a USING (
<foreach collection="list" item="item" index="index" separator="UNION">
SELECT
#{item.id, jdbcType=VARCHAR} id,
#{item.name, jdbcType=VARCHAR} name,
#{item.age, jdbcType=VARCHAR} age
FROM DUAL
</foreach>
) b ON (
a.id= b.id
)
WHEN NOT MATCHED THEN
INSERT (
id,
name,
age
)
VALUES (
b.id,
b.name,
b.age
)
WHEN MATCHED THEN
UPDATE
SET
a.name= b.name,
a.age= b.age
</insert>