场景:批量插入如果数据存在则修改
使用ON DUPLICATE KEY UPDATE实现。实现该功能的关键在于,需要找到表的唯一性约束条件,即什么时候是INSERT,什么时候UPDATE。
# 增加唯一性约束SQL
ALTER TABLE table ADD UNIQUE uk_xxx (column)
ALTER TABLE table ADD UNIQUE uk_xxx_vvv (xxx,vvv)
SQL:
INSERT INTO table VALUES (),(),().... ON DUPLICATE KEY UPDATE column=VALUES(column),column=VALUES(column),column=VALUES(column)....
实战:department表,批量插入数据如果存在则修改。
MySQL实现:
/**
* insert or update department.uk_code
* @param datas
* @return
*/
@Insert({ "<script>",
"INSERT INTO department(code, name, parent_id, owner, status) ", "VALUES",
"<foreach collection='departmentEntityList' item='departmentEntity' separator=','>",