当我们用mybatis-plus批量新增数据的时候,我们一般都是使用IService里面提供的saveBatch方法进行操作,殊不知对于小批量操作,这个方法是可行的,对于大数据量操作,速度是很慢的,它的底层是一个for循环,一条条进行新增的。
其实mybatis-plus提供了InsertBatchSomeColumn方法进行批量操作,现在进入代码实操:
一:新建EasySqlInjector继承DefaultSqlInjector方法
@Component
public class EasySqlInjector extends DefaultSqlInjector {
@Override
public List<AbstractMethod> getMethodList() {
//继承原有方法
List<AbstractMethod> methodList = super.getMethodList();
//注入新方法
methodList.add(new InsertBatchSomeColumn(t -> !t.isLogicDelete()));
return methodList;
}
}
二:注入bean
@Configuration
@MapperScan("mapper*")
public class MybatisPlusConfig {
@Bean
public EasySqlInjector myLogicSqlInjector() {
return new EasySqlInjector();
}
}
三:mapper中新增方法
public interface BillExtendMapper extends BaseMapper<BillExtend> {
Integer insertBatchSomeColumn(List<BillExtend> entityList);
}
后续就可以直接使用mapper中的批量插入了。