在平常的程序写插入操作时,一般都会先根据主键去查该条记录是否存在来决定本次是做新增还是更新。但在程序中这样的写法会存在并发问题,会导致同时插入两条一样的数据。
所以推荐在mapper.xml文件中自己实现一个insertOrUpdate的方法,具体如下
<insert id="insertOrUpdate">
insert into table_name(field1,field2,field3,...)
values(
#{object.field1},
#{object.field2},
#{object.field3})
ON DUPLICATE KEY UPDATE
field1=values(field1),
field2=values(field2),
field3=values(field3)
</insert>