MySQL insertOrUpdate 存在時更新,不存在時插入
阿新 • • 發佈:2018-11-01
前提:判斷更新或者插入的條件是 表裡的唯一索引是否衝突,比如插入主鍵值相同的資料。
如需要根據某個鍵值來判斷,必須建立唯一索引。
方式:使用 ON DUPLICATE KEY UPDATE 命令
Mybatis
<insert id="insertOrUpdate" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"> insert into user_agree_protocol( id, user_id, protocol_id, protocol_version ) values <foreach collection="list" item="item" index="index" separator=","> ( #{item.id}, #{item.userId}, #{item.protocolId}, #{item.protocolVersion}) </foreach> ON DUPLICATE KEY UPDATE protocol_version = VALUES (protocol_version) </insert>
SQL語句的寫法和MyBatis寫法差不多,就不單獨給出了。這裡用VALUES就可以直接拿到原本要插入但插入失敗的值。