
java开发springBoot+mybatisPlus已经成为主流,最近遇到新旧系统的切换,批量插入读取原来的数据插入到新的系统的表中,使用mybatisPlus的方法
saveBatch(),但是发现巨慢,查询源码和sql发现其实里面也是遍历之后再单条插入,难怪慢呢.其实就是伪批量,可能再事务提交上有处理,但是还是不能容忍.查资料整理出来一套正式的批量插入方法,生产已经使用,实测10W数据.1-3分钟左右可插入,完全可以满足需求,有需要的小伙伴可以参考,简简单单集成到自己的系统,废话不多说,直接上代码:
第一步:创建 EasySqlInjector到spring容器
@Bean
public EasySqlInjector easySqlInjector() {
return new EasySqlInjector();
}
第二部:创建自定义mapper接口
自定义 mapper接口,扩展baseMapper,并使用mybatis的真实批量插入方法
import com.baomidou.mybatisplus.core.mapper.baseMapper; import java.util.Collection; public interface EasybaseMapperextends baseMapper { Integer insertBatchSomeColumn(Collection entityList); }
第三步:创建批量插入的实现类 baseIServiceImpl
import lombok.extern.s