mybatis-plus的insertBatchSomeColumn方法实现批量插入

1、编写SQL注入器

java 复制代码
@Component("batchInsertInjector")
public class BatchInsertInjector extends DefaultSqlInjector {

    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
        List<AbstractMethod> methodList = super.getMethodList(mapperClass);
        methodList.add(new InsertBatchSomeColumn());
        return methodList;
    }
}

2、自定义Mapper继承BaseMapper

java 复制代码
public interface AbstractMapper<T>  extends BaseMapper<T> {

    Integer SIZE_LIMIT = 3000;

    /**
     * 批量插入,借助mybatis-plush的injector实现
     * @param entities
     */
    void insertBatchSomeColumn(@Param("list") List<T> entities);

    /**
     * 分段批量插入
     * @param entities
     */
    default void segmentBatchInsert(List<T> entities){
        if (CollectionUtils.isEmpty(entities)) {
            return;
        }
        List<List<T>> partition = Lists.partition(entities, SIZE_LIMIT);
        for (List<T> part : partition) {
            insertBatchSomeColumn(part);
        }
    }
}

3、实体类的mapper继承自定义mapper

java 复制代码
@Mapper
public interface LibraryBusinessInfoMapper extends AbstractMapper<LibraryBusinessInfo> {
}

4、使用批量插入方法

java 复制代码
    @Autowired
    private LibraryBusinessInfoMapper libraryBusinessInfoMapper;
    @Override
    @Transactional
    public int batchAdd(List<AddLibraryInfoReqVo> addLibraryInfoReqVos) {
        List<LibraryInfo> libraryInfos = ReqVo2Entity.INSTANCE.addLibraryInfos2LibraryInfos(addLibraryInfoReqVos);
        libraryInfoMapper.segmentBatchInsert(libraryInfos);
        return libraryInfos.size();
    }
相关推荐
8***f3954 分钟前
Spring容器初始化扩展点:ApplicationContextInitializer
java·后端·spring
r_oo_ki_e_10 分钟前
java22--常用类
java·开发语言
linweidong21 分钟前
C++ 中避免悬挂引用的企业策略有哪些?
java·jvm·c++
用户937611475816122 分钟前
并发编程三大特性
java·后端
阿在在24 分钟前
Spring 系列(二):加载 BeanDefinition 的几种方式
java·后端·spring
小当家.10532 分钟前
Maven与Gradle完整对比指南:构建工具深度解析
java·gradle·maven
neoooo39 分钟前
🍃Spring Boot 多模块项目中 Parent / BOM / Starter 的正确分工
java·后端·架构
黄金贼贼40 分钟前
2026最新java单元测试json校验器
java·单元测试·json
菜鸟的迷茫40 分钟前
为了防雪崩加了限流,结果入口先挂了
java·后端·架构
荒诞硬汉42 分钟前
数组常见算法
java·数据结构·算法