在工作中总会遇到新增数据的时候,判断相同的数据不导入的问题。传统的解决方式是通过查询数据库的方式解决,但是十分的耗费性能,这里我们提供一种较为简便的方式,使用replace into方法:
对于存在的重复数据,会替换掉,不存在的新增
使用replace into 的前提是,数据库的字段需要添加唯一联合索引
alter table t_car_oil_statistics add unique index save_unique_index(car_id,statistics_date,statistics_month);
然后使用replace into 语句解决,其中(car_id,statistics_date,statistics_month);是数据库中不能重复的字段条件
<select id="batchSaveCarOilStatistics" parameterType="java.util.List">
replace INTO t_car_oil_statistics
(created,
car_id,
statistics_date,
oil,
cost,
card_num,
company_id,
statistics_month
)
VALUES
<foreach collection="list" index="index" item="item" separator=",">
(#{item.created},
#{item.carId},
#{item.statisticsDate},
#{item.oil},
#{item.cost},
#{item.cardNum},
#{item.companyId},
#{item.statisticsMonth})
</foreach>
</select>