1.mysql的
<insert id="insertOrUpdateNew">
insert into test
(a,b,c)
values
(#{a},#{b},#{c})
on duplicate key update
c = values(c)
</insert>
<insert id="insertOrUpdateNewNew">
insert into test
(a,b,c)
values
<foreach collection="list" item="l" separator=",">
(#{l.a},#{l.b},#{l.c})
</foreach>
on duplicate key update
c = values(c)
</insert>
2.postgresql
<insert id="insertOrUpdateNew">
insert into test
(a,b,c)
values
(#{a},#{b},#{c})
on conflict(a,b)
do update set
c = #{c}
</insert>
<insert id="insertOrUpdateNewNew">
insert into test
(a,b,c)
values
<foreach collection="list" item="l" separator=",">
(#{l.a},#{l.b},#{l.c})
</foreach>
on conflict(a,b) do nothing
</insert>
推荐下面:
<insert id="insertOrUpdateNew">
insert into test
(a,b,c)
values
(#{a},#{b},#{c})
on conflict(a,b) do update set c = excluded.c
</insert>
postgresql插入的多条的话,总是报错....看网上也有人这样啊,难道版本原因,请大牛解答~
insert into test
(a,b,c)
values
(1,1,2),(1,1,3)
on conflict(a,b) do update set c = excluded.c