千家信息网

Mybatis-Plus如何实现批量插入

发表于:2024-10-25 作者:千家信息网编辑
千家信息网最后更新 2024年10月25日,这篇文章将为大家详细讲解有关Mybatis-Plus如何实现批量插入,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Mybatis Plus 的 IService 接
千家信息网最后更新 2024年10月25日Mybatis-Plus如何实现批量插入

这篇文章将为大家详细讲解有关Mybatis-Plus如何实现批量插入,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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


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

一. 添加依赖

    com.baomidou    mybatis-plus-extension    3.4.0

二. 继承默认方法注入

在 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 getMethodList(Class mapperClass) {        List 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 extends BaseMapper {    /**     * 批量插入 仅适用于mysql     * @param entityList 实体列表     * @return 影响行数     */    Integer insertBatchSomeColumn(List entityList);}

五. 业务层面实现

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

import org.apache.ibatis.annotations.Mapper;/** * @author jichunyang * @description 用户Mapper */@Mapperpublic interface UserMapper extends EasyBaseMapper {}

service实现层的使用

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import org.springframework.stereotype.Service;@Servicepublic class UserServiceImpl extends ServiceImpl implements IUserService {            @Override    @Transactional    public void insertUsers(List users) {            // 这里使用了自定义的批量插入,baseMapper可以直接使用,不需要声明            baseMapper.insertBatchSomeColumn(users);        }}

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

关于"Mybatis-Plus如何实现批量插入"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0