mybatis-plus中saveBatch等批量操作空指针问题描述:报错信息解决思路解决方案疑问参考的博客描述:又是马上要到了下班时间,哈哈,希望能给到你帮助,潦草解释一下只要是批量的操作都会出现空指针,反而save单个操作却没有问题,你一定很懵,这是咋回事?报错信息Causedby:java.lang.NullPointerException:null atcom.baomidou.mybatisplus.extension.toolkit.SqlHelper.sqlSessionBatch(SqlHelper.java:53)~[mybatis-plus-extension-3.1.0.
MybatisPlus使用saveBatch方法批量插入时雪花算法ID重复问题.(Java)背景:批量插入的实体ID属性使用注解@TableId(type=IdType.ASSIGN_ID)方式实现ID生成.代码中需要批量插入实体数据,使用saveBatch(List);时报数据库错误:IDKEY条目重复.解决:于是尝试使用IdWorker.getId()方法在生成实体时插入ID,然后DeBug查看ID生成情况.发现也是出现了ID重复的情况,然后观察实体属性发现一个规律,重复的ID实体其他属性值也是一致的,就有了这么一个猜测:因为实体属性相等,影响了ID的赋值,导致ID重复.于是我把属性重复的
最近在压测一批接口,发现接口处理速度慢的有点超出预期,感觉很奇怪,后面定位发现是数据库批量保存这块很慢。 这个项目用的是mybatis-plus,批量保存直接用的是mybatis-plus提供的saveBatch。我点进去看了下源码,感觉有点不太对劲: 继续追踪了下,从这个代码来看,确实是for循环一条一条执行了sqlSession.insert,下面的consumer执行的就是上面的sqlSession.insert: 然后累计一定数量后,一批flush。从这点来看,这个saveBach的性能肯定比直接一条一条insert快。我直接进行一个粗略的实验,简单创建了一张表来对比一波! 1、100
数据量过大,使用saveBatch保存数据太慢如何解决:在使用mybatis-plus的saveBatch方法时发现保存太慢,会生成一大堆的insert,而不是一批一批的,影响因素可能有两个,如下:1.mybatis-plus使用saveBatch的时候,需要保证字段不为null,如果可能为null的话,在可以在注解上增加忽略@TableField(value="manager_name",insertStrategy=FieldStrategy.IGNORED)privateString managerName;这样能保证saveBatch的时候只会有一个insert(当然这也取决于你用的批