欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-07 23:06:13
目录三. 在 mybatisplusconfig 配置文件中注入 bean四. 扩展自带 basemappermybatis plus 的 iservice 接口中提供了批量插入的方法,然而,它的内部...

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

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

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

一. 添加依赖

<!--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

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

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 是定义的业务逻辑接口,和批量插入配置无关;

参考博客:

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