栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis plus无介绍快使用,MybatisPlus3.5版本设置批量插入附源码(十一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis plus无介绍快使用,MybatisPlus3.5版本设置批量插入附源码(十一)

Mybatis plus无介绍快使用,MybatisPlus3.5版本设置批量插入附源码(十一)
  • 问题背景
      • Mybatis-plus无介绍快使用,CRUD增删改查基本使用附源码(一)
      • Mybatis-plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二)
      • Mybatis-plus无介绍快使用,自带封装service层的使用附源码(三)
      • Mybatis-plus无介绍快使用,注解的使用(四)
      • Mybatis-plus无介绍快使用,Wrapper条件构造器的使用附源码(五)
      • Mybatis-plus无介绍快使用,分页插件和乐观锁插件的使用附源码(六)
      • Mybatis-plus无介绍快使用,枚举变量的使用附源码(七)
      • Mybatis-plus无介绍快使用,多数据源的使用(八)
      • Mybatis-plus无介绍快使用,MybatisX自动生成代码插件的使用(九)
      • Mybatis-plus无介绍快使用,可继承通用的基础实体类(十)
  • MybatisPlus批量插入
  • 总结
  • Lyric: 放晴 等雨说放弃

问题背景

项目中,尽量使用批量插入,减少数据库磁盘IO的操作,提高效率
注意事项:

  • 官方网站:https://baomidou.com/
  • 官方文档:https://baomidou.com/pages/24112f/
  • 可以自己创建工程,也可以下载源码进行参考
  • MyBatis-Plus在实现插入数据时,会默认基于雪花算法的策略生成id,实体类entity属性都使用对象,使用Long,不能使用long,不然雪花算法会失效
Mybatis-plus无介绍快使用,CRUD增删改查基本使用附源码(一) Mybatis-plus无介绍快使用,自定义sql语句CRUD增删改查附源码(二) Mybatis-plus无介绍快使用,自带封装service层的使用附源码(三) Mybatis-plus无介绍快使用,注解的使用(四) Mybatis-plus无介绍快使用,Wrapper条件构造器的使用附源码(五) Mybatis-plus无介绍快使用,分页插件和乐观锁插件的使用附源码(六) Mybatis-plus无介绍快使用,枚举变量的使用附源码(七) Mybatis-plus无介绍快使用,多数据源的使用(八) Mybatis-plus无介绍快使用,MybatisX自动生成代码插件的使用(九) Mybatis-plus无介绍快使用,可继承通用的基础实体类(十) MybatisPlus批量插入

1 MybatisPlus3.5版本和3.3版本有些许不同,3.3版本会少一个tableInfo参数,创建EasySqlInjector类

package com.lanran.transactional.config;

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;

import java.util.List;




public class EasySqlInjector extends DefaultSqlInjector {

    @Override
    public List getMethodList(Class mapperClass, TableInfo tableInfo) {
        // TODO Auto-generated method stub
        List methodList = super.getMethodList(mapperClass, tableInfo);
        methodList.add(new InsertBatchSomeColumn()); // 添加InsertBatchSomeColumn方法
        return methodList;
    }

}

2 添加mybatisplus配置类

package com.lanran.transactional.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;



@Configuration
public class MybatisPlusConfig {

        @Bean
        public EasySqlInjector easySqlInjector () {
            return new EasySqlInjector();
        }

}

3 启动类,一定要添加MapperScan

package com.lanran.transactional;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan("com.lanran.transactional.dao")
@SpringBootApplication
public class TransactionalApplication {

    public static void main(String[] args) {
        SpringApplication.run(TransactionalApplication.class, args);
    }

}

4 mapper、xml、entity都是使用mybatisplus生成的,测试类如下

package com.lanran.transactional;

import com.lanran.transactional.dao.JpaTestMapper;
import com.lanran.transactional.dao.PaymentMapper;
import com.lanran.transactional.entity.Payment;
import com.lanran.transactional.service.PaymentService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.List;


@SpringBootTest
class TransactionalApplicationTests {

    @Test
    void contextLoads() {
    }

    @Autowired
    PaymentMapper paymentMapper;


    @Test
    public void batchInsertTest(){
        List payments = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            Payment p = new Payment();
            p.setSerial(String.valueOf(i));
            payments.add(p);
        }
        Integer integer = paymentMapper.insertBatchSomeColumn(payments);
        System.out.println(integer);
    }

}

5 application配置文件

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mysqltest?characterEncoding=utf-8&useSSL=false
    username: root
    password: 123456
  sql:
    init:
      encoding: utf-8

6 测试结果,一共批量插入了5条数据

7 整体项目目录

总结

自己也可以在xml中写sql语句,只是表太多有点麻烦




作为程序员第 213 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …

Lyric: 放晴 等雨说放弃
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号