mybatis-plus 中saveOrUpdateBatch都是采用默认策略(主键)作为判断该数据存在与否的依据,当我们需要使用其他字段作为判断条件的时候,发现不论怎么使用都不行。 这个时候可以采取简单的方式,list在代码里面循环里面使用saveOrUpdate来进行一条一条更新,但是一条一条更新会太慢,当数据太大时也是不行的。 所以这里采用自...
mybatisPlusWrapper.saveBatch(list); } 请注意,上述代码中的mybatisPlusWrapper是MybatisPlus的Wrapper对象,用于构建SQL查询语句。list是待插入的数据列表。generateUniqueId()方法用于生成唯一的ID。通过以上解决方案,我们可以避免在使用MybatisPlus的saveBatch()方法批量插入数据时出现雪花算法ID重复的问题。在实际应用中...
saveBatch 方法是MyBatis-Plus提供的一个批量插入数据的接口。在插入数据时,MyBatis-Plus会根据配置的主键生成策略(如自增、UUID、雪花算法等)来生成主键。如果主键生成策略不当或数据集中已存在相同的主键,就会引发主键冲突。 2. 分析主键冲突的可能原因 主键冲突的可能原因包括: 主键生成策略不当:例如,使用了自增...
功能描述:根据多个主键判断表中是否存在重复记录,存在则更新,不存在则插入 一、依赖 <dependencies>...//其他依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</version></dependency><dependency><groupId>com.github.jeffreyning</groupId><arti...
解决mybatisplus saveBatch 或者save 无法插入主键问题 通过跟踪源码后得出结论,由于插入的表的主键不是自增的,而是手动赋值的,所以在调用saveBatch 执行的sql语句是没有主键字段的(项目启动后mybatis 会对DynamicSqlSource 中的rootSqlNode对象赋值,里面就定了insert 插入的字段,默认是没有主键字段的 ),所以在设置实...
mybatis-plus使用上需要注意的问题 1.问题产生 之前,开发项目使用的是tk-mapper,当使用批量操作时,通常使用insertList就可以了。但是,最近的项目使用的是mybaits-plus,在使用批量操作saveBatch的使用,却遇到了一个问题,这个一开始让我以为我的数据出现了重复,但是仔细看,不是数据出现了重复,而是因为有一个字段相同,...
作者今天在开发一个后台发送消息的功能时,由于需要给多个用户发送消息,于是使用了mybatis plus提供的saveBatch()方法,在测试环境测试通过上预发布后,测试反应发送消息接口很慢得等 5、6 秒,于是我就登录预发布环境查看执行日志,发现是mybatis plus提供的saveBatch()方法执行很慢导致,于是也就有了本篇文章。
mybatis-plus ,批量保存直接用的是 mybatis-plus 提供的 saveBatch。于是开始排查之路。一、源码分析 ...
重现步骤(如果有就写完整) 报错信息 org.springframework.dao.DuplicateKeyException: com.non.gprs.domino.mapper.PlmnCountryMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Duplicate entry '1261209472891355137-1260820741919440897' for key 'plmn_country' ...
<mybatis-plus-boot-starter.version>3.3.0</mybatis-plus-boot-starter.version> 由于Mybatis-Plus本身已经有增删改查以及批量保存的基本接口了,所以我们没必要新建一张表就重复写一套自己的增删改查,我们在公共层抽一个BaseService接口(继承MyBatis-Plus的IService)以及BaseServiceImpl实现类(实现ServiceImpl类)。