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

如下是实现方法

1、代码结构

2、实体类

  1. package little.tiger.one.application.testblockt.domain;
  2.  
  3. import com.baomidou.mybatisplus.annotation.TableId;
  4. import com.baomidou.mybatisplus.annotation.TableName;
  5.  
  6. import org.apache.commons.lang3.builder.ToStringBuilder;
  7. import org.apache.commons.lang3.builder.ToStringStyle;
  8.  
  9. import java.util.Date;
  10.  
  11. /**
  12. * <p>
  13. * 。
  14. * </p>
  15. *
  16. * @author yc
  17. * @since 2023-08-01
  18. */
  19. @TableName(value = "test_block_t")
  20. public class TestBlockT {
  21. private static final long serialVersionUID = 1L;
  22.  
  23. /**
  24. * 。
  25. */
  26. @TableId
  27. private String blockId;
  28. /**
  29. * 。
  30. */
  31. private String blockName;
  32.  
  33. public void setBlockId(String blockId) {
  34. this.blockId = blockId;
  35. }
  36.  
  37. public String getBlockId() {
  38. return blockId;
  39. }
  40.  
  41. public void setBlockName(String blockName) {
  42. this.blockName = blockName;
  43. }
  44.  
  45. public String getBlockName() {
  46. return blockName;
  47. }
  48.  
  49. @Override
  50. public String toString() {
  51. return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
  52. .append("blockId", getBlockId())
  53. .append("blockName", getBlockName())
  54. .toString();
  55. }
  56. }

3、mapper

  1. package little.tiger.one.application.testblockt.mapper;
  2.  
  3. import little.tiger.one.application.testblockt.domain.TestBlockT;
  4. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  5.  
  6. /**
  7. * <p>
  8. * Mapper 接口。
  9. * </p>
  10. *
  11. * @author yc
  12. * @since 2023-08-01
  13. */
  14. public interface TestBlockTMapper extends BaseMapper<TestBlockT> {
  15.  
  16. }

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

  1. package little.tiger.one.application.testblockt.service;
  2.  
  3. import com.baomidou.mybatisplus.extension.service.IService;
  4. import little.tiger.one.application.testblockt.domain.TestBlockT;
  5.  
  6. import java.util.Collection;
  7. import java.util.List;
  8. import java.util.Map;
  9.  
  10. /**
  11. * <p>
  12. * 服务类。
  13. * </p>
  14. *
  15. * @author yc
  16. * @since 2023-08-01
  17. */
  18. public interface ITestBlockTService extends IService<TestBlockT> {
  19.  
  20. /**
  21. * 单记录新增。
  22. *
  23. * @param testBlockT 参数说明
  24. * @return status
  25. */
  26. int insert(TestBlockT testBlockT);
  27.  
  28. boolean saveBatch(Collection<TestBlockT> entityList);
  29. }

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

  1. package little.tiger.one.application.testblockt.service.impl;
  2.  
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import little.tiger.one.application.testblockt.domain.TestBlockT;
  5. import little.tiger.one.application.testblockt.mapper.TestBlockTMapper;
  6. import little.tiger.one.application.testblockt.service.ITestBlockTService;
  7. import org.springframework.stereotype.Service;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  10. import org.springframework.transaction.annotation.Transactional;
  11.  
  12. import java.util.Collection;
  13. import java.util.List;
  14. import java.util.Map;
  15. import java.util.HashMap;
  16.  
  17. /**
  18. * <p>
  19. * 服务实现类。
  20. * </p>
  21. *
  22. * @author yc
  23. * @since 2023-08-01
  24. */
  25. @Service
  26. public class TestBlockTServiceImpl extends ServiceImpl<TestBlockTMapper, TestBlockT> implements ITestBlockTService {
  27. @Autowired
  28. TestBlockTMapper testBlockTMapper;
  29.  
  30. /**
  31. * 单记录新增。
  32. *
  33. * @param testBlockT 参数说明
  34. * @return status
  35. */
  36. @Override
  37. public int insert(TestBlockT testBlockT) {
  38. return testBlockTMapper.insert(testBlockT);
  39. }
  40.  
  41. @Override
  42. @Transactional
  43. public boolean saveBatch(Collection<TestBlockT> entityList) {
  44. return super.saveBatch(entityList);
  45. }
  46. }

6、控制类

  1. package little.tiger.one.application.testblockt.controller;
  2.  
  3. import little.tiger.one.application.testblockt.service.ITestBlockTService;
  4. import little.tiger.one.application.testblockt.domain.TestBlockT;
  5. import little.tiger.one.basemanager.page.PageUtil;
  6. import little.tiger.one.webbase.component.HttpStatusCode;
  7. import little.tiger.one.webbase.controller.BaseController;
  8. import little.tiger.one.webbase.pojo.AjaxResult;
  9. import little.tiger.one.webbase.pojo.PageDomain;
  10. import little.tiger.one.webbase.util.ServletUtil;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.web.bind.annotation.*;
  15.  
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import java.util.Map;
  19. import javax.validation.Valid;
  20. import javax.validation.constraints.NotNull;
  21.  
  22. /**
  23. * <p>
  24. * 前端控制器。
  25. * </p>
  26. *
  27. * @author yc
  28. * @since 2023-08-01
  29. */
  30.  
  31. @RestController
  32. @RequestMapping("/testblockt")
  33. public class TestBlockTController extends BaseController {
  34.  
  35. @Autowired
  36. private ITestBlockTService testBlockTService;
  37.  
  38. /**
  39. * 单记录新增。
  40. *
  41. * @param testBlockT 参数说明
  42. * @return AjaxResult
  43. */
  44. @PostMapping(value = "/add", headers = API_VERSION_NAME + "=v1")
  45. @ResponseBody
  46. public AjaxResult addSave(@Valid TestBlockT testBlockT) {
  47. List<TestBlockT> list = new ArrayList();
  48. TestBlockT testBlockT1 = new TestBlockT();
  49. testBlockT1.setBlockId("1");
  50. testBlockT1.setBlockName("oracle");
  51. list.add(testBlockT1);
  52. TestBlockT testBlockT2 = new TestBlockT();
  53. testBlockT2.setBlockId("2");
  54. testBlockT2.setBlockName("mysql");
  55. list.add(testBlockT2);
  56. Boolean result = testBlockTService.saveBatch(list);
  57. System.out.println(result);
  58. return AjaxResult.success(HttpStatusCode.POST_SUCCESS_CODE, "成功");
  59. }
  60.  
  61. }

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. 【Codeforces Global Round 12】 C2 - Errich-Tac-Toe题解(思维)

    题面 题目要求不能有有三个连续相同的'X'或'O',注意到这样的连续串它们的横纵坐标之和是连续变化的,考虑将它们按照横纵坐标之和对 \(3\)的模值分组,因为这样分组后相邻的三个相同字符就被分到了三个 ...

  2. net8获取泛微token以及访问api示例

    工作中涉及到调用泛微的场景,官方的示例又臭又长,抽空用NET8简化了写法,为了简化http访问,用了Flurl.Http这个库.在座各位大佬,我们直接就看代码了   using System.Secu ...

  3. redis集群搭建注意事项

    官方教程:https://redis.io/docs/management/scaling/ 其他参考: https://note.youdao.com/ynoteshare/index.html?i ...

  4. python tkinter 使用(八)

    python tkinter 使用(八) 本文主要讲下tkinter库中的其他的一些模块,如simpleDialog,scrollerText等. 1: simpleDialog simpledial ...

  5. 【scikit-learn基础】--『监督学习』之 LASSO回归

    LASSO(Least Absolute Shrinkage and Selection Operator)回归模型一般都是用英文缩写表示,硬要翻译的话,可翻译为 最小绝对收缩和选择算子. 它是一种线 ...

  6. 【scikit-learn基础】--『监督学习』之 K-近邻分类

    KNN(K-近邻),全称K-Nearest Neighbors,是一种常用的分类算法.KNN算法的历史可以追溯到1957年,当时Cover和Hart提出了"最近邻分类"的概念.但是 ...

  7. Pikachu漏洞靶场 RCE(远程命令执行/代码执行)

    RCE 文章目录 RCE 概述 exec "ping" exec "eval" 概述 RCE(remote command/code execute),远程命令 ...

  8. Golang实现JAVA虚拟机-指令集和解释器

    原文链接:https://gaoyubo.cn/blogs/f57f32cf.html 前置 Golang实现JAVA虚拟机-解析class文件 Golang实现JAVA虚拟机-运行时数据区 一.字节 ...

  9. Sequelize的简单连接和使用

    Sequelize是一个基于Node.js的ORM框架 特点: 1.支持多种数据库:Sequelize支持多种关系型数据库,包括MySQL.PostgreSQL.SQLite和MSSQL等,适用于需要 ...

  10. 微信小程序中业务域名的配置

    需要配置业务域名,需要先将域名http转https 1,首先在该微信小程序的公众号平台中下载 业务域名的证书 2,将下载的证书放进nginx的根目录 3,在nginx中 (root为.txt的地址)