批量插入成功了,但是id是null 在解决这个问题的过程中,我最初想实现“批量插入即可,心里默认为和插入1个一样,会有id”, 后来为了“批量插入也要返回主键id”,最后我发现,"这是不能实现的"。 mysql底层,insert values批量插入,返回的是“个数”。 目前,不知道怎么去证实我的猜测。 最后,附上单个插入的sql <i...
当前使用版本(必填,否则不予处理) 3.1.0 该问题是如何引起的?(确定最新版也有问题再提!!!) 在插入操作时候,想批量获取插入成功后的主键id, 重现步骤(如果有就写完整) 报错信息
背景:需要实现批量插入并且得到插入后的ID。 使用for循环进行insert这里就不说了,在海量数据下其性能是最慢的。数据量小的情况下,没什么区别。 【1】saveBatch(一万条数据总耗时:2478ms) mybatisplus扩展包提供的:com.baomidou.mybatisplus.extension.service.IService#saveBatch(java.util.Collection<T>) 测试代码...
调用saveOrUpdateBatchByMultiId()方法根据多主键批量保存或更新 packagecom.chenly.mpp.controller;importcom.chenly.mpp.entity.Score;importcom.chenly.mpp.service.ScoreService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframew...
保存通知消息 根据用户 id,组装用户通知记录集合,返回 200 条用户通知记录 批量保存用户通知记录集合 前两步骤耗时都很少,我们直接看第三步操作耗时,结合 sql 执行日志,如下, 复制 -- slow sql 5542 millis. INSERT INTO oa_notify_record ( notifyId, receiveUserId, receiveUserName, isRead, createTime ) VAL...
在使用MybatisPlus时,使用saveBatch()批量保存数据的时候报错Caused by: java.sql.BatchUpdateException: Field 'id' doesn't have a default value,这是因为MybatisPlus不会自动插入主键ID,可以使用@TableId(type = IdType.INPUT)注解加到主键上让我们自己填充ID,它一共有6种策略 ...
/*** service层的crud接口方法批量插入*/@TestpublicvoidtestServiceBatchAdd(){List<User>users=newArrayList<>();for(longi=1;i<=1000;i++){Useruser=User.builder().id(i).userNo("No-"+i).nickname("哈哈").phone("12345678901").email("shepherd_123@qq.com").birthday(newDate()).gender(0)....
MyBatis-plus 中默认提供了一个批量保存数据到数据库的方法,也就是 IService#saveBatch() 接口方法。这个方法的实现为 ServiceImpl#saveBatch(),其源码实际处理的关键如下,从中可以知道 IService#saveBatch() 并不是一个真正的批量插入数据的方法 调用ServiceImpl#sqlStatement() 使用 SqlMethod.INSERT_ONE 枚举结...
这个项目用的是mybatis-plus,批量保存直接用的是mybatis-plus提供的 saveBatch。 于是开始排查之路。 一、源码分析 我点进去看了下源码,感觉有点不太对劲。 如下图所示: 我继续追踪了下,从这个代码来看,确实是 for 循环一条一条执行了sqlSession.insert,下面的 consumer 执行的就是上面的sqlSession.insert。