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

如下是实现方法

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. 0x06.HelloPHP

    PHP基础 格式 最后一句可以不加分号 <?php echo "hello" ?> 可以不加结束标签,但是最后一句要加分号 <?php echo "he ...

  2. 深入了解UUID:生成、应用与优势

    一.引言 在当今数字化时代,唯一标识一个对象的能力变得越来越重要.UUID(Universally Unique Identifier,通用唯一标识符)应运而生,作为一种保证全球唯一性的标识方法,广泛 ...

  3. java监听全局组合键

    1. jintellitype pom <!-- 不能注册多个组合键比如alt+abc --> <!-- https://mvnrepository.com/artifact/com ...

  4. C# 字节数组、各进制字符串数据互转

    前言 日常开发过程中,格式转换是必不可少的重要环节,经常是十进制转十六进制.十六进制转byte数组又转换回来来回转换,最然进制转换很基础同时 C# 也提供了很多直接方便进行格式转换的方法,但是封装一个 ...

  5. C++ Qt开发:MdiArea多窗体组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍MdiArea ...

  6. cache操作:clean、invalidate与flush的含义

    前言 本文试图搞清楚cache几个操作:clean.invalidate与flush的含义.由于只用过ARM和RISC-V,所以是从ARM和RISC-V的角度来说明. cache line cache ...

  7. ElasticSearch之cat count API

    读取当前存储的记录的数量. 命令样例如下: curl -X GET "https://localhost:9200/_cat/count?v=true&pretty" -- ...

  8. TypeScript开篇

    1.什么是TypeScript(TS)? Typescript 为 JS 带来了类型能力,如今已被越来越多的大型前端项目选用.Typescript 的出现大大改善了开发体验,增强了代码的可维护性和稳定 ...

  9. bash命令的使用

    bash的工作特性之命令执行状态返回值和命令展开所涉及的内容及其示例演出 !脚本执行与调试 1.绝对路径执行,要求文件有执行权限 2.以sh命令执行,不要求文件有执行权限 3..加空格或source命 ...

  10. 开源:Taurus.DTC 微服务分布式事务框架,支持 .Net 和 .Net Core 双系列版本

    前言: 在经过1年多的深思,十几年的框架编写技术沉淀下,花了近一个月的时间,终于又为 .Net 及 .Net Core 的微服务系列框架贡献当中的一个重要组件. 1.开源地址: https://git ...