ON DUPLICATE KEY-一次實現批量插入或批量修改

場景:批量插入如果數據存在則修改

使用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=','>",
                            "(#{departmentEntity.code}, #{departmentEntity.name}, #{departmentEntity.parentId}," +
                                    "#{departmentEntity.owner}, #{departmentEntity.status})" +
                        "</foreach>",
                    "ON DUPLICATE KEY UPDATE name=VALUES(name), parent_id=VALUES(parent_id), owner=VALUES(owner), status=VALUES(status) ",
              "</script>"})
    Integer batchInsertOrUpdateDepartment(@Param("departmentEntityList") List<DepartmentEntity> datas);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章