标签:upd 持久层框架 https tis 唯一性 duplicate 索引 冲突 app
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
如上sql假如t1表的主键或者UNIQUE 索引是a,那么当执行sql的时候,如果数据库里面已经存在a=1的记录则更新这条记录的c字段的值为原来值+1,然后返回值为2;如果不存在则插入记录a=1,b=2,c=3,然后返回值为1。如果insert语句中同时出现UNIQUE索引和PRIMARY KEY,则以后者为准。ON DUPLICATE KEY UPDATE后面可以放多个字段,用英文逗号分割。
INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(c), b=VALUES(b);
<insert id="insertOrUpdateBatch">
INSERT INTO t1 (a,b,c) values
<foreach collection="list" item="item" separator=",">
(#{item.a},#{item.b},#{item.c})
</foreach>
ON DUPLICATE KEY UPDATE c=values(c),b=values(b)
</insert>
对应的mapper接口可以定义为:
long insertOrUpdateBatch(List<Test> list);
实体类定义
class Test{
private int a;
private int b;
private int c;
// omit getter, setter and toString
}
MySQL ON DUPLICATE KEY UPDATE 语法
标签:upd 持久层框架 https tis 唯一性 duplicate 索引 冲突 app
原文地址:https://www.cnblogs.com/east7/p/11706729.html