mybatis批量插入数据,数据存在时更新,不存在时插入

本文介绍了一种使用MyBatis实现数据批量插入或更新的方法,通过在SQL语句中使用ON DUPLICATE KEY UPDATE子句,当数据已存在时进行更新,否则插入新数据。该方法适用于需要维护数据一致性的场景,如统计信息的实时更新。
<insert id="insertList">
    insert into oc_contract_item_expense_statistics (`statistics_datetime`, `statistics_json`, `store_id`, `parent_store_id`, `store_type`)
    values
    <foreach collection="list" item="item" index="index" separator="," >
      (#{item.statisticsDatetime}, #{item.statisticsJson}, #{item.storeId}, #{item.parentStoreId}, #{item.storeType})
    </foreach>
    ON DUPLICATE KEY UPDATE
    statistics_json=values(statistics_json), update_time=now()
  </insert>

上面mybatis写的sql实现了如果数据存在时则更新数据,不存在时插入数据

注意:

实现这种需求需要有唯一索引,我上面的代码中为 statistics_datetime 字段与 store_id 字段创建了联合唯一索引

如果数据存在的话就会触发条件 ON DUPLICATE KEY UPDATE ,从而更新字段 statistics_json=values(statistics_json), update_time=now()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值