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

如下是实现方法

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. salesforce零基础学习(一百三十四)State And Country/Territory Picklists启用后的趣事

    本篇参考: https://help.salesforce.com/s/articleView?id=sf.admin_state_country_picklists_overview.htm& ...

  2. 使用Netty实现文件传输的HTTP服务器和客户端

    现在我们来用netty实现文件传输的HTTP服务器和客户端 pom依赖文件: <?xml version="1.0" encoding="UTF-8"?& ...

  3. 数字孪生和GIS融合为智慧水利带来了什么?

    数字孪生和GIS的融合为智慧水利领域带来了巨大的变革和机遇.数字孪生技术的出现,使得水利管理者和决策者能够更好地理解和管理水资源,提高水利设施的效率和可持续性.而GIS作为空间数据管理和分析工具,为数 ...

  4. java,类、实例化、构造方法、this关键字、方法重载

    编写类的步骤: 1.定义类名 2.编写类的属性 3.编写类的方法 public  访问修饰符,表示在整个项目中都可以调用,也可以用其他词 使用class关键字来定义类,如下,定义一个Cat类 给了属性 ...

  5. 获取微信的token工具类

    import cn.hutool.extra.spring.SpringUtil; import cn.hutool.http.HttpUtil; import cn.RedisUtil; impor ...

  6. 【OpenCV】在 Mac OS 上使用 EmguCV

    前言 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Androi ...

  7. java生成企业公章图片源代码

    企业公章图片在电子签章业务中应用广泛,在电子签章应用过程中首先需要生成公章图片,然后再使用公章图片结合数字签名技术完成电子签,这样就实现了从可视化到不可篡改的数字化电子签章功能,以下是企业公章图片生成 ...

  8. 简单介绍JDK、JRE、JVM三者区别

    简单介绍JDK vs JRE vs JVM三者区别 文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习, ...

  9. 简易机器学习笔记(十一)opencv 简易使用-人脸识别、分类任务

    前言 前段时间摸了下机器学习,然后我发现其实openCV还是一个很浩瀚的库的,现在也正在写一篇有关yolo的博客,不过感觉理论偏多,所以在学yolo之前先摸一下opencv,简单先写个项目感受感受op ...

  10. 自定义Graph Component:1.1-JiebaTokenizer具体实现

      JiebaTokenizer类继承自Tokenizer类,而Tokenizer类又继承自GraphComponent类,GraphComponent类继承自ABC类(抽象基类).本文使用<使 ...