mybatis_plus批量修改
时间: 2023-09-26 19:07:22 浏览: 151
使用Mybatis-plus进行批量修改时,官方提供的方法是基于id来修改的。但是有时候我们需要修改其他字段,这时候需要自己进行扩展。
你可以参考中提到的代码,自定义一个工具类,例如`MybatisBatchUtils`,该工具类可以实现在Mybatis环境下进行批量修改操作。该工具类中的`batchUpdateOrInsert`方法可以接收一个数据列表、一个Mapper类以及一个函数,用于批量修改数据。
具体步骤如下:
1. 首先,创建一个工具类,例如`MybatisBatchUtils`,并添加`@Component`注解,以使其成为Spring的一个组件。
2. 在该工具类中,定义一个常量`BATCH_SIZE`,用于指定批量操作的大小。
3. 使用`@Autowired`注解注入`SqlSessionFactory`,以获取SqlSession对象。
4. 编写`batchUpdateOrInsert`方法,该方法接收三个参数:数据列表、Mapper类以及一个函数。其中,数据列表用于存储要修改的数据,Mapper类用于执行对应的SQL语句,函数用于对每条数据进行修改操作。
5. 在方法中,使用`sqlSessionFactory.openSession(ExecutorType.BATCH)`来创建批量操作的SqlSession对象。
6. 循环遍历数据列表,在每次循环中,使用函数对当前数据进行修改操作,并在满足批量操作大小或已到达数据列表末尾时,通过`batchSqlSession.flushStatements()`来刷新缓存的SQL语句。
7. 在循环结束后,根据是否存在事务,使用`batchSqlSession.commit`来提交事务。
8. 若发生异常,使用`batchSqlSession.rollback()`进行回滚,并抛出异常。
9. 最后,记得关闭batchSqlSession。
通过以上步骤,你可以自定义一个批量修改方法来满足你的需求。
参考资料:
: 使用Mybatis-plus可以很方便的实现批量新增和批量修改,不仅比自己写foreach遍历方便很多,而且性能也更加优秀。但是Mybatis-plus官方提供的批量修改和批量新增都是根据id来修改的,有时候我们需求其他字段,所以就需要我们自己修改一下。
: 有时候项目里没有引用Mybatis-plus,但是也想进行批量操作,数据量大了后foreach循环会影响性能。所以可以参考Mybatis-plus的批量操作,编写在mybatis环境下的批量操作,代码如下: @Component public class MybatisBatch
阅读全文