MyBatis-Plus 提供了 InsertBatchSomeColumn 方法来实现真正的批量插入。MyBatis-Plus 默认提供的 saveBatch 方法并不是真正的批量插入,而是遍历实体集合每执行一次 insert 语句插入一条记录。相比之下,通过 InsertBatchSomeColumn 方法可以实现单条 insert 语句插入多条记录,从而提高插入性能。
methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE)); return methodList; } } 3)注入插件 @Configuration public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor()...
因此我们需要把SQL组装成这种结构,查看InsertBatchSomeColumn类,可以发现SQL组装逻辑在injectMappedStatement方法,因此我们模仿InsertBatchSomeColumn类,编写SQL组装逻辑 importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.core.enums.SqlMethod;importcom.baomidou.mybatisplus.core.metadata.Table...
MyBatis-Plus作为MyBatis的增强工具,提供了丰富的批量操作功能。其中,insertBatchSomeColumn方法允许我们在插入数据时选择性地指定某些列,这对于插入数据时只需要部分列的情况非常有用。 1. 工作原理 insertBatchSomeColumn方法通过构建预处理语句(PreparedStatement)来实现批量插入。在执行批量插入时,数据库会优化执行计划,...
一、MyBatis插入数据方式 1. MyBatis单条save方式; 2. MyBatis多条mapper.xml里写foreach循环; 3. MyBatis-Plus多条saveBatch方式,默认提交数量1000条; 4. MyBatis-Plus批量insertBatchSome
Mybatis Plus默认提供了insertBatchSomeColumn选装件 当批量插入的PO对象是NULL值,且数据库字段是NotNull且有默认值时就会报Value Not Null异常 二、解决思路 在代码生成器时对PO对象赋予默认值 在BaseServiceImpl实现类中对PO对象值为Null,数据库字段NotNull且有默认的值字段自动设置默认值 ...
3. MyBatis-Plus中的批量插入方法 MyBatis-Plus提供了多种批量插入的方法,其中insertBatchSomeColumn是一个非常实用的方法。它允许我们选择性地插入某些列,而不是所有列,这在某些场景下非常有用。 3.1insertBatchSomeColumn方法的基本用法 insertBatchSomeColumn方法的基本用法如下: ...
3、 编写自定义BaseMapper,加入InsertBatchSomeColumn方法 4、需要批量插入的Mapper继承自定义BaseMapper 5、创建OracleInsertBatchSomeColumn类 package com.cicc.odts.report.config; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.core.enums.SqlMethod; ...
调用insertBatchSomeColumn方法批量插入,多次触发调用MetaObjectHandler的insertFill 重现步骤(如果有就写完整) 原因如下: 这里的map添加了collection和list 到了这里的时候,如果判断是Map, 则返回多个parameters,多个parameters的数据都是相同的 这里就对同一个对象处理了多次 ...
public interface MyBaseMapper<T> extends BaseMapper<T> { int insertBatchSomeColumn(List<T> entityList); int alwaysUpdateSomeColumnById(@Param(Constants.ENTITY) T entity); } --- @Bean public ISqlInjector sqlInjector() { return new NormalSqlInjector(); } ---...