Mybatis中 ON DUPLICATE KEY UPDATE用法
在MySQL數據庫中,如果在insert語句後面帶上ON DUPLICATE KEY UPDATE 子句,那麼 插入的行與表 與 現有記錄 的惟一索引或主鍵中產生重複值,那麼就會發生舊行的更新;如果插入的行數據與現有表中記錄的唯一索引或者主鍵不重複,則執行新紀錄插入操作。
條件 | 操作 |
---|---|
唯一索引/主鍵相同 | 更新原有數據 |
唯一索引/主鍵不同 | 插入新數據 |
總結: 存在則更新,如果不存在則新增
舉例:
<insert id="add">
INSERT INTO t_purchase (order_id, mac_type, price, amount, type, file,inputer,description)
VALUES
<foreach collection="list" index="index" item="item" separator=",">
(#{item.orderId}, #{item.macType}, #{item.price}, #{item.amount}, #{item.type}, #{item.file}, #{item.inputer}, IFNULL(#{item.description},DEFAULT(description)))
</foreach>
ON DUPLICATE KEY UPDATE
order_id = VALUES(order_id),
mac_type = VALUES(mac_type),
price = VALUES(price),
amount = VALUES(amount),
type = VALUES(type),
file = VALUES(file),
inputer = VALUES(inputer),
description = VALUES(description),
enable = 1
</insert>