在工做中總會遇到新增數據的時候,判斷相同的數據不導入的問題。傳統的解決方式是經過查詢數據庫的方式解決,可是十分的耗費性能,這裏咱們提供一種較爲簡便的方式,使用replace into方法:
對於存在的重複數據,會替換掉,不存在的新增
使用replace into 的前提是,數據庫的字段須要添加惟一聯合索引java
例如:t_aa 表中有aa,bb兩個字段,若是不但願有2條如出一轍的記錄(即:aa字段的值能夠重複; bb字段的值也能夠重複,可是一條記錄(aa,bb)組合值不容許重複),須要給 t_aa 表添加多個字段的聯合惟一索引:數據庫
alter table t_car_oil_statistics add unique index save_unique_index(car_id,statistics_date);
而後使用replace into 語句解決,其中(car_id,statistics_date);是數據庫中不能重複的字段條件性能
<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>
關於插入數據時候先判斷數據是否存在 幾種不一樣使用狀況 能夠參考spa
https://blog.csdn.net/w309827333/article/details/79482407.net