MySQL MyBatis如何实现批量插入数据时如果存在就更新或者忽略

坚强是说给别人听的谎言 提交于 2020-08-05 06:35:25

需求:项目需要调用别人的接口,读取的数据实时的对话记录,我这边需要读取并保存到数据库,然后需要用数据写一些接口;

由于数据是实时更新的,所以我这边就写了一个定时任务配置类,如下图


image.png


如果直接添加,insert的话这样会有相同的数据重复添加,如何避免呢


  1. 首先,需要实现更新或忽略的数据的判别字段必须是主键或存在唯一索引(可以是单列或多列)。

比如要根据id判断是否重复,那么id必须是主键或者存在唯一索引。

比如要根据rid + type + date判断是否重复,那么要建立3个字段联合的唯一索引。

  2.然后就是修改SQL了,如下:

 

存在就更新:

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

存在就忽略:

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

这样就可以简单地对数据进行批量操作。


image.png



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!