MyBatis一条语句(PostgresSql)实现批量新增更新操作ON CONFLICT
MyBatis一条语句(PostgresSql)实现批量新增更新操作ON CONFLICT
ON CONFLICT(“主键”) 可实现一条语句实现批量新增更新操,但是切记统一批次更新主键不能重复
语句示例
INSERT INTO "user" ("user_id", "username")
VALUES
(35, '李雷'),
(36, '韩梅梅')
ON CONFLICT ("user_id")
DO UPDATE SET
"user_id" = EXCLUDED."user_id",
"username" = EXCLUDED."username"
user_id为主键
MyBatis xml实现
<insert id="userBatchInsertOrUpdate" parameterType="java.util.List">
INSERT INTO "user" ("user_id", "username") VALUES
<foreach collection="list" item="item" separator=",">
(#{item.user_id}, #{item.username})
</foreach>
ON CONFLICT ("user_id")
DO UPDATE SET
"user_id" = EXCLUDED."user_id",
"username" = EXCLUDED."username"
</insert>