InsertBatchSomeColumn 方法来实现真正的批量插入。MyBatis-Plus 默认提供的 saveBatch 方法并不是真正的批量插入,而是遍历实体集合每执行一次 insert 语句插入一条记录。相比之下,通过 InsertBatchSomeColumn 方法可以实现单条 insert 语句插入多条记录,从而提高插入性能。
import com.baomidou.mybatisplus.core.injector.AbstractMethod; import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn; import java.util.List; public class Eas...
因此我们需要把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且有默认的值字段自动设置默认值 ...
其中,BaseMapper是MyBatis-Plus提供的一个基础Mapper接口,它包含了一系列常用的数据库操作方法。 在BaseMapper中,有一个名为insertBatchSomeColumn的方法,它可以批量插入数据,并且只插入指定的列。这个方法的定义如下: ```java ``` 使用insertBatchSomeColumn方法时,需要注意以下几点: 1. 实体对象集合entityList中的...
int MAPPER_BATCH_SIZE = 1000; /** * mp原生方法是单次插入分批提交,本质还是一次操作一个连接 * * @param modelCollection 实体数据集 * @see com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn * @see com.baomidou.mybatisplus.extension.service.impl.ServiceImpl#saveBatch(Collectio...
methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE)); return methodList; } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 2、将SQL注入器交给Spring容器 在MybatisPlusConfig类中,将刚才创建的SQL注入器InsertBatchSqlInjector 注册为一个bean。
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(); } ---...