zoukankan      html  css  js  c++  java
  • 拓展mybatisPlus 支持批量插入

    MybatisPlus默认提供的批量插入方法实际上是单条插入的,跟我们预期的不一样。其实MybatisPlus提供了真正的批量插入方法,但是只适用于MYSQL,所以并没有放出来,需要自己去拓展一下。

    依赖版本:

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.0</version>
    </dependency>

    新建拓展类:

    import com.baomidou.mybatisplus.core.injector.AbstractMethod;
    import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
    import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;
    import org.springframework.stereotype.Component;
    
    import java.util.List;
    
    /**
     * 211013
     * 拓展mybatisPlus 支持批量插入
     */
    @Component
    public class ExpandSqlInjector extends DefaultSqlInjector {
        @Override
        public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
            List<AbstractMethod> methodList = super.getMethodList(mapperClass);
            methodList.add(new InsertBatchSomeColumn());
            return methodList;
        }
    
    }

    创建新的ExpandBaseMapper:

    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    
    import java.util.Collection;
    
    /**
     * 211013
     * 真正实现批量插入的拓展接口
     *
     * @param <T>
     */
    public interface ExpandBaseMapper<T> extends BaseMapper<T> {
    
    
        /**
         * 批量插入 仅适用于mysql
         *
         * @param entityList 实体列表
         * @return 影响行数
         */
        Integer insertBatchSomeColumn(Collection<T> entityList);
    }

    注入bean:

    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    /**
     * MyBatis配置类
     * Created by xc on 2020/9/4.
     */
    @Configuration
    @EnableTransactionManagement
    @MapperScan({"com.xc.xcspringboot.mapper,com.xc.xcspringboot.*.mapper"})
    public class MyBatisConfig {
    
        /**
         * 分页插件: PaginationInnerInterceptor
         */
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
            return interceptor;
        }
    
        @Bean
        public ExpandSqlInjector expandSqlInjector() {
            return new ExpandSqlInjector();
        }
    
    
    }

    在自己的mapper中继承ExpandBaseMapper,调用insertBatchSomeColumn即可实现真正的批量插入。

    public interface TbUserMapper extends ExpandBaseMapper<TbUser> {
    }

    文章来源:https://blog.csdn.net/qq_18630487/article/details/111153883

  • 相关阅读:
    bzoj 3111 蚂蚁 动态规划
    bzoj3011 可并堆
    bzoj2693 莫比乌斯反演
    bzoj 2671 莫比乌斯反演
    bzoj2194 快速傅立叶之二 FFT
    bzoj1396&&2865 识别子串 后缀自动机+线段树
    安卓开发中使用ZXing生成解析二维码
    使用tencent协议发起临时会话
    使用zxing编写的二维码生成解析工具:QRCoder
    使用JavaScript获取浏览器Chrome版本信息
  • 原文地址:https://www.cnblogs.com/ooo0/p/15401085.html
Copyright © 2011-2022 走看看