<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()
本文介绍了一种使用MyBatis实现数据批量插入或更新的方法,通过在SQL语句中使用ON DUPLICATE KEY UPDATE子句,当数据已存在时进行更新,否则插入新数据。该方法适用于需要维护数据一致性的场景,如统计信息的实时更新。
5539





