MySQL MyBatis如何實現批量插入數據時若是存在就更新或者忽略

需求:項目須要調用別人的接口,讀取的數據實時的對話記錄,我這邊須要讀取並保存到數據庫,而後須要用數據寫一些接口;數據庫

因爲數據是實時更新的,因此我這邊就寫了一個定時任務配置類,以下圖ide


image.png


若是直接添加,insert的話這樣會有相同的數據重複添加,如何避免呢spa


  1. 首先,須要實現更新或忽略的數據的判別字段必須是主鍵或存在惟一索引(能夠是單列或多列)。blog

好比要根據id判斷是否重複,那麼id必須是主鍵或者存在惟一索引。索引

好比要根據rid + type + date判斷是否重複,那麼要創建3個字段聯合的惟一索引。接口

  2.而後就是修改SQL了,以下:it

 

存在就更新:class

REPLACE INTO 表名(字段1, 字段2, ...) VALUES(值1, 值2, ...), (值1, 值2, ...);配置

存在就忽略:date

INSERT IGNORE 表名(字段1, 字段2, ...) VALUES(值1, 值2, ...), (值1, 值2, ...);

這樣就能夠簡單地對數據進行批量操做。


image.png

相關文章
相關標籤/搜索