好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Mybatis Plus 实现批量插入的示例代码

Mybatis Plus 的 IService 接口中提供了批量插入的方法,然而,它的内部实现逻辑竟然是这样的:

居然是循环单条插入?!逗人玩嘛,好吧,自己动手,丰衣足食。

一. 添加依赖

 <!--mybatis plus extension,包含了mybatis plus core--> 
 < dependency > 
     < groupId > com.baomidou </ groupId > 
     < artifactId > mybatis-plus-extension </ artifactId > 
     < version > 3.4.0 </ version > 
 </ dependency > 

二. 继承默认方法注入

在 injector 包下新建 EasySqlInjector.java

EasySqlInjector.java

 import  com.baomidou.mybatisplus.core.injector.AbstractMethod;
 import  com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
 import  com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;
 import  java.util.List;

 /**
 *  @author : jichunyang
 *  @description : 自定义数据方法注入
 *  @date : 2020/12/18 14:15
 **/ 
 public    class   EasySqlInjector   extends   DefaultSqlInjector   {

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

三. 在 MybatisPlusConfig 配置文件中注入 Bean

 //开启事务 
 @EnableTransactionManagement 
 @Configuration 
 @MapperScan("扫描的mapper包路径") 
 public    class   MybatisPlusConfig   {
	
	 //需要注入的Bean 
	 @Bean 
      public  EasySqlInjector  easySqlInjector  ()   {
         return   new  EasySqlInjector();
    }
    
	 @Bean("sqlSessionFactory") 
      public  SqlSessionFactory  sqlSessionFactory  ()   throws  Exception  {
        MybatisSqlSessionFactoryBean sqlSessionFactory =  new  MybatisSqlSessionFactoryBean();
         // 其他配置项 
        ......
        sqlSessionFactory.setGlobalConfig(globalConfiguration());
         return  sqlSessionFactory.getObject();
    }

     @Bean 
      public  GlobalConfig  globalConfiguration  ()   {
        GlobalConfig conf =  new  GlobalConfig();
         // 自定义的注入需要在这里进行配置 
        conf.setSqlInjector(easySqlInjector());
         return  conf;
    }
}

四. 扩展自带 BaseMapper

在 mapper 包下新建 EasyBaseMapper 接口,扩展自带 BaseMapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util. List ;

 public    interface   EasyBaseMapper < T >  extends   BaseMapper < T >  {

     /**
     * 批量插入 仅适用于mysql
     *  @param  entityList 实体列表
     *  @return  影响行数
     */ 
     Integer  insertBatchSomeColumn( List <T> entityList);
}

五. 业务层面实现

修改业务 mapper 接口 UserMapper,继承刚刚扩展的 EasyBaseMapper

 import  org.apache.ibatis.annotations.Mapper;

 /**
 *  @author  jichunyang
 *  @description  用户Mapper
 */ 
 @Mapper 
 public    interface   UserMapper   extends   EasyBaseMapper < User >  {

}

service实现层的使用

 import  com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import  org.springframework.stereotype.Service;

 @Service 
 public    class   UserServiceImpl   extends   ServiceImpl < UserMapper ,  User >  implements   IUserService   {
	
     @Override 
     @Transactional 
      public   void   insertUsers  (List<User> users)   {
	     // 这里使用了自定义的批量插入,baseMapper可以直接使用,不需要声明 
	    baseMapper.insertBatchSomeColumn(users);
	}
}

IUserService 是定义的业务逻辑接口,和批量插入配置无关;

参考博客: http://HdhCmsTesttuohang.net/article/220478.html

到此这篇关于Mybatis Plus 实现批量插入的示例代码的文章就介绍到这了,更多相关Mybatis Plus批量插入内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://blog.csdn.net/j1231230/article/details/111386018

查看更多关于Mybatis Plus 实现批量插入的示例代码的详细内容...

  阅读:21次