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

网友投稿 862 2022-12-05

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

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

目录一. 添加依赖二. 继承默认方法注入三. 在 MybatisPlusConfig 配置文件中注入 Bean四. 扩展自带 BaseMapper五. 业务层面实现

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

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

一. 添加依赖

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

qdrqthsd * @param entityList 实体列表

* @return 影响行数

*/

Integer insertBatchSomeColumn(List entityList);

}

五. 业务层面实现

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

import org.apache.ibatis.annotations.Mapper;

/**

* @author jichunyang

* @description 用户Mapper

*/

@Mapper

public interface UserMapper extends EasyBaseMapper {

}

service实现层的使用

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import org.springframework.stereotype.Service;

@Service

public class UserServiceImpl extends ServiceImpl implements IUserService {

@Override

@Transactional

public void insertUsers(List users) {

// 这里使用了自定义的批量插入,baseMapper可以直接使用,不需要声明

baseMapper.insertBatchSomeColumn(users);

}

}

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

参考博客:https://jb51-/article/196445.htm

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MybatisPlus 插入或更新数据时自动填充更新数据解决方案
下一篇:MybatisPlus开启、关闭二级缓存方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~