为了提高数据处理效率,大量数据需要插入数据时可以采用批量数据插入的策略提高数据插入的效率。

如下是实现方法

1、代码结构

2、实体类

package little.tiger.one.application.testblockt.domain;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import java.util.Date; /**
* <p>
* 。
* </p>
*
* @author yc
* @since 2023-08-01
*/
@TableName(value = "test_block_t")
public class TestBlockT {
private static final long serialVersionUID = 1L; /**
* 。
*/
@TableId
private String blockId;
/**
* 。
*/
private String blockName; public void setBlockId(String blockId) {
this.blockId = blockId;
} public String getBlockId() {
return blockId;
} public void setBlockName(String blockName) {
this.blockName = blockName;
} public String getBlockName() {
return blockName;
} @Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("blockId", getBlockId())
.append("blockName", getBlockName())
.toString();
}
}

3、mapper

package little.tiger.one.application.testblockt.mapper;

import little.tiger.one.application.testblockt.domain.TestBlockT;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; /**
* <p>
* Mapper 接口。
* </p>
*
* @author yc
* @since 2023-08-01
*/
public interface TestBlockTMapper extends BaseMapper<TestBlockT> { }

4、接口  尤其注意红色部分

package little.tiger.one.application.testblockt.service;

import com.baomidou.mybatisplus.extension.service.IService;
import little.tiger.one.application.testblockt.domain.TestBlockT; import java.util.Collection;
import java.util.List;
import java.util.Map; /**
* <p>
* 服务类。
* </p>
*
* @author yc
* @since 2023-08-01
*/
public interface ITestBlockTService extends IService<TestBlockT> { /**
* 单记录新增。
*
* @param testBlockT 参数说明
* @return status
*/
int insert(TestBlockT testBlockT); boolean saveBatch(Collection<TestBlockT> entityList);
}

5、接口实现 注意红色部分,如果是单数据源@Transactional 这么写就可以,如果是多数据源一定要指定事务例如:@Transactional(transactionManager="testTransactionManager")

package little.tiger.one.application.testblockt.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import little.tiger.one.application.testblockt.domain.TestBlockT;
import little.tiger.one.application.testblockt.mapper.TestBlockTMapper;
import little.tiger.one.application.testblockt.service.ITestBlockTService;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.transaction.annotation.Transactional; import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.HashMap; /**
* <p>
* 服务实现类。
* </p>
*
* @author yc
* @since 2023-08-01
*/
@Service
public class TestBlockTServiceImpl extends ServiceImpl<TestBlockTMapper, TestBlockT> implements ITestBlockTService {
@Autowired
TestBlockTMapper testBlockTMapper; /**
* 单记录新增。
*
* @param testBlockT 参数说明
* @return status
*/
@Override
public int insert(TestBlockT testBlockT) {
return testBlockTMapper.insert(testBlockT);
} @Override
@Transactional
public boolean saveBatch(Collection<TestBlockT> entityList) {
return super.saveBatch(entityList);
}
}

6、控制类

package little.tiger.one.application.testblockt.controller;

import little.tiger.one.application.testblockt.service.ITestBlockTService;
import little.tiger.one.application.testblockt.domain.TestBlockT;
import little.tiger.one.basemanager.page.PageUtil;
import little.tiger.one.webbase.component.HttpStatusCode;
import little.tiger.one.webbase.controller.BaseController;
import little.tiger.one.webbase.pojo.AjaxResult;
import little.tiger.one.webbase.pojo.PageDomain;
import little.tiger.one.webbase.util.ServletUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.validation.Valid;
import javax.validation.constraints.NotNull; /**
* <p>
* 前端控制器。
* </p>
*
* @author yc
* @since 2023-08-01
*/ @RestController
@RequestMapping("/testblockt")
public class TestBlockTController extends BaseController { @Autowired
private ITestBlockTService testBlockTService; /**
* 单记录新增。
*
* @param testBlockT 参数说明
* @return AjaxResult
*/
@PostMapping(value = "/add", headers = API_VERSION_NAME + "=v1")
@ResponseBody
public AjaxResult addSave(@Valid TestBlockT testBlockT) {
List<TestBlockT> list = new ArrayList();
TestBlockT testBlockT1 = new TestBlockT();
testBlockT1.setBlockId("1");
testBlockT1.setBlockName("oracle");
list.add(testBlockT1);
TestBlockT testBlockT2 = new TestBlockT();
testBlockT2.setBlockId("2");
testBlockT2.setBlockName("mysql");
list.add(testBlockT2);
Boolean result = testBlockTService.saveBatch(list);
System.out.println(result);
return AjaxResult.success(HttpStatusCode.POST_SUCCESS_CODE, "成功");
} }

7、效果

调用接口日志里就是批量插入、数据库表里数据也有了

mybatis-plus数据批量插入的更多相关文章

  1. MyBatis 使用 foreach 批量插入

    MyBatis 使用 foreach 批量插入 参考博文 老司机学习MyBatis之动态SQL使用foreach在MySQL中批量插入 使用MyBatis一次性插入多条数据时候可以使用 <for ...

  2. 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解

    SQLite数据库作为一般单机版软件的数据库,是非常优秀的,我目前单机版的软件产品线基本上全部替换Access作为优选的数据库了,在开发过程中,有时候需要批量写入数据的情况,发现传统的插入数据模式非常 ...

  3. C#中几种数据库的大数据批量插入

    C#语言中对SqlServer.Oracle.SQLite和MySql中的数据批量插入是支持的,不过Oracle需要使用Orace.DataAccess驱动. IProvider里有一个用于实现批量插 ...

  4. SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)

    1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地 ...

  5. C#:几种数据库的大数据批量插入

    在之前只知道SqlServer支持数据批量插入,殊不知道Oracle.SQLite和MySql也是支持的,不过Oracle需要使用Orace.DataAccess驱动,今天就贴出几种数据库的批量插入解 ...

  6. c#数据批量插入

    由于之前面试中经常被问到有关EF的数据批量插入问题,今天以Sqlserver数据库为例,对.net中处理数据批量处理的方案进行了测试对比. 1.四种测试方案 (1)普通的EF数据批量插入:即调用DbS ...

  7. C#:几种数据库的大数据批量插入(转)

    在之前只知道SqlServer支持数据批量插入,殊不知道Oracle.SQLite和MySql也是支持的,不过Oracle需要使用Orace.DataAccess驱动,今天就贴出几种数据库的批量插入解 ...

  8. C#:几种数据库的大数据批量插入 - faib

    在之前只知道SqlServer支持数据批量插入,殊不知道Oracle.SQLite和MySql也是支持的,不过Oracle需要使用Orace.DataAccess驱动,今天就贴出几种数据库的批量插入解 ...

  9. PHP如何将多维数组中的数据批量插入数据库?

    PHP将多维数组中的数据批量插入到数据库中,顾名思义,需要用循环来插入. 1.循环insert into 语句,逐渐查询 <?php /* www.qSyz.net */ @mysql_conn ...

  10. c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)

    这篇文章主要介绍了c#几种数据库的大数据批量插入(SqlServer.Oracle.SQLite和MySql),需要的朋友可以了解一下. 在之前只知道SqlServer支持数据批量插入,殊不知道Ora ...

随机推荐

  1. Educational Codeforces Round 56 (Rated for Div. 2) G题(线段树,曼哈顿距离)

    题目传送门 以二维为例,二维下两点间的曼哈顿距离最大值为\(max(|x_i-x_j| + |y_i-y_j|)\),可以通过枚举坐标符号正负来去掉绝对值.即\(max(x_i-x_j+y_i-y_j ...

  2. [ABC267G] Increasing K Times

    Problem Statement You are given an integer sequence $A = (A_1, \dots, A_N)$ of length $N$. Find the ...

  3. [ABC267F] Exactly K Steps

    Problem Statement You are given a tree with $N$ vertices. The vertices are numbered $1, \dots, N$, a ...

  4. Mybatis-Flex核心功能之@Id

    1.是什么? 在 Entity 类中,MyBatis-Flex 是使用 @Id 注解来标识主键的 2.怎么玩? public @interface Id { /** * ID 生成策略,默认为 non ...

  5. RabbitMQ入门到进阶

    1.MQ简介 MQ 全称为 Message Queue,是在消息的传输过程中保存消息的容器.多用于分布式系统 之间进行通信. 2.为什么要用 MQ 1.流量消峰 没使用MQ 使用了MQ 2.应用解耦 ...

  6. bash shell笔记整理——less命令

    less命令的作用 less和cat.more最大的差别在于不会一次性加载整个文件,速度比较快!另外less具备翻页功能,可以向上/向下翻页! 语法 less [选项] [文件名] *选项* *使用说 ...

  7. 华企盾DSC申请解密在键盘中勾选会自动取消

    解决方法:打开系统偏好设置-键盘--服务,由于服务中超出了系统支持的最大菜单数,删除两个即可

  8. 看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存

    前言 缓存是提升程序性能必不可少的方法,Asp.net core 支持多级缓存配置,主要有客户端缓存.服务器端缓存,内存缓存和分布式缓存等.其中客户端缓和服务器端缓存在使用上都有比较大的限制,而内存缓 ...

  9. 记一次 .NET某股票交易软件 灵异崩溃分析

    一:背景 1. 讲故事 在dump分析的旅程中也会碰到一些让我无法解释的灵异现象,追过这个系列的朋友应该知道,上一篇我聊过 宇宙射线 导致的程序崩溃,后来我又发现了一例,而这一例恰恰是高铁的 列控连锁 ...

  10. ElasticSearch之Clear cache API

    本方法用于清理缓存. 命令样例如下: curl -X POST "https://localhost:9200/testindex_001/_cache/clear?pretty" ...