广告
返回顶部
首页 > 资讯 > 数据库 >数据库批量插入数据的三种方法
  • 164
分享到

数据库批量插入数据的三种方法

mysqlmybatisspringboot 2023-08-20 15:08:41 164人浏览 薄情痞子
摘要

一、准备工作 测试环境:SpringBoot项目+mybatisPlus框架+Mysql数据库+Lombok 二、导入依赖 org.springframework.boot spring-

一、准备工作

测试环境:SpringBoot项目+mybatisPlus框架+Mysql数据库+Lombok

二、导入依赖

<dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starter-WEBartifactId>            <version>2.5.3version>        dependency>        <dependency>            <groupId>mysqlgroupId>            <artifactId>mysql-connector-javaartifactId>            <version>8.0.20version>        dependency>        <dependency>            <groupId>org.projectlombokgroupId>            <artifactId>lombokartifactId>            <version>1.18.22version>        dependency>        <dependency>            <groupId>com.baomidougroupId>            <artifactId>mybatis-plus-boot-starterartifactId>            <version>3.5.1version>        dependency>

三、yml配置文件

server:  port: 8081spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    type: com.alibaba.druid.pool.DruidDataSource    username: root    passWord: 123456    url: jdbc:mysql://localhost:3306/mysql?useSSL=false&characterEncoding=utf-8&useUnicode=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true##rewriteBatchedStatements=true   开启批处理模式

四、实体类(数据库表要有对应字段)

package com.cy.model;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;@Data@AllArgsConstructor@NoArgsConstructorpublic class User implements Serializable {    private Integer id;    private String username;    private String password;}

五、测试

  1. 方法一:for循环插入(单条)(总耗时:n分钟,每次都要获取连接Connection、释放连接和关闭资源等操作,比较耗时,这里就没测了)
@RequestMapping("/test3")  //单个插入(慢)    public String test3(){        long startTime=System.currentTimeMillis();        for(int i=0;i<100000;i++){            userService.save(new User(i+1,"张三","123456"));        }        long endTime=System.currentTimeMillis();        long result=endTime-startTime;        return "总耗时:"+(result/1000);    }
  1. 方法二:批量插入saveBatch(4~7秒,这里用到了MybatisPLus的saveBatch批量插入方法,实际也是for循环单条插入,只不过它是利用分片处理batchSize=1000和分批提交事务,从而提高了性能,不用在Connection上消费性能了)(推荐)
@RequestMapping("/test2")  //批量插入saveBatch(分片处理batchSize=1000,分批提交事务) (次快)    public String test2(){        List<User> userList=new ArrayList<>();        long startTime=System.currentTimeMillis();        for(int i=0;i<100000;i++){            userList.add(new User(i+1,"张三","123456"));        }        userService.saveBatch(userList);        long endTime=System.currentTimeMillis();        long result=endTime-startTime;        return "总耗时:"+(result/1000);    }
  1. 方法三:循环插入+开启批处理模式(4~7秒,开启批处理模式,关闭自动提交事务,共同用一个sqlsession,单个插入性能得到提升,由于用同一个sqlsession,极大的减少了对资源操作和对事务处理的时间,很好地提高了性能)(推荐)
@Resource    private SqlSessionFactory sqlSessionFactory;@RequestMapping("/test1")  //批量插入(最快)---循环插入+批处理模式 ( 开启批处理模式  rewriteBatchedStatements=true )    public String test1(){        //开启批处理模式,关闭自动提交事务        SqlSession sqlSession= sqlSessionFactory.openSession(ExecutorType.BATCH,false);        long startTime=System.currentTimeMillis();        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);        for(int i=0;i<100000;i++){            userMapper.insert(new User(i+1,"张三","123456"));        }        sqlSession.commit();//一次性提交事务        sqlSession.close();//关闭资源        long endTime=System.currentTimeMillis();        long result=endTime-startTime;        return "总耗时:"+(result/1000);    }

以上就是全部内容,希望对大家有帮助!

来源地址:https://blog.csdn.net/qq_59837950/article/details/127740560

您可能感兴趣的文档:

--结束END--

本文标题: 数据库批量插入数据的三种方法

本文链接: https://www.lsjlt.com/news/376516.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库批量插入数据的三种方法
    一、准备工作 测试环境:SpringBoot项目+MybatisPlus框架+MySQL数据库+Lombok 二、导入依赖 org.springframework.boot spring-...
    99+
    2023-08-20
    mysql mybatis spring boot
  • Mybatis三种批量插入数据的方式
    目录1. 循环插入 2. foreach标签 3. 批处理 三种方式的对比 1. 循环插入 mapper.xml: <?xml version="1.0" enc...
    99+
    2022-11-12
  • MyBatis批量插入数据的三种方法实例
    目录前言准备工作1.循环单次插入2.MP批量插入①控制器实现②业务逻辑层实现③数据持久层实现MP性能测试MP源码分析3.原生批量插入①业务逻辑层扩展②数据持久层扩展③添加UserMa...
    99+
    2022-11-12
  • MyBatis 批量插入数据的 3 种方法!
    数据库的最终效果如下: 1.循环单次插入 接下来我们将使用 Spring Boot 项目,批量插入 10W 条数据来分别测试各个方法的执行时间。​ 循环单次插入的(测试)核心代码如下: import com.example.de...
    99+
    2023-09-11
    mybatis java 数据库
  • Android批量插入数据到SQLite数据库的方法
    Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知。因此在Android中插入数...
    99+
    2022-06-06
    方法 数据 sqlite数据库 SQLite Android
  • Mybatis批量插入数据的两种方式
    总体描述 软件开发过程中需要批量插入数据的场景有几种: 从离线文件(excel, csv等)导入大批量数据到系统。从其它系统定时或者人工同步大批量数据到系统。程序自身的某些算法执行时会生成大批量数据保...
    99+
    2023-09-07
    mybatis java 开发语言 batch insert
  • .NET多种数据库大数据批量插入分析
    本篇内容介绍了“.NET多种数据库大数据批量插入分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!功能介绍 (需要版本5.0.45)大数据操...
    99+
    2023-06-25
  • SQLServer批量插入数据的三种方式及性能对比
    昨天下午快下班的时候,无意中听到公司两位同事在探讨批量向数据库插入数据的性能优化问题,顿时来了兴趣,把自己的想法向两位同事说了一下,于是有了本文。 公司技术背景:数据库访问类(xxx...
    99+
    2022-11-12
  • mysql大批量插入数据的4种方法示例
    前言 本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法一:循环插入 这个也是最普通的方式,如果数据量不是很大,可以使用,但是...
    99+
    2022-10-18
  • Mysql大数据批量插入方法
    MySQL是当前最流行的关系型数据库之一,大数据批量插入是MySQL中常用的操作之一。在处理大量数据时,如果一条一条地插入会极大地影响效率,因此批量插入是一个更好的选择,可以大大提高数据的处理速度。下面介绍几种MySQL大数据批量插入的方法...
    99+
    2023-09-14
    mysql 大数据 数据库
  • SpringBootMybatis批量插入Oracle数据库数据
    目录前端数据数据表结构后端Controller:mapperxml前端数据 有如下需求,前端提交一个对象cabinData,保存到数据表中,对象结构如下:  {      "ship...
    99+
    2022-11-13
  • Android批量插入数据到SQLite数据库
      Android中在sqlite插入数据的时候默认一条语句是一个事务,因此如果存在上万条数据插入的话,那需要执行上万次插入操作,操作速度可想而知。因此在Android中插...
    99+
    2022-06-06
    数据 sqlite数据库 SQLite Android
  • 数据库中怎么批量插入数据
    本文小编为大家详细介绍“数据库中怎么批量插入数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“数据库中怎么批量插入数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。批量插入批量插入使用 execute...
    99+
    2023-06-08
  • MySQL批量数据插入或修改的几种方法比较
    本文主要给大家介绍MySQL批量数据插入或修改的几种方法比较,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL批量数据插入或修改的几种方法比较...
    99+
    2022-10-18
  • Elasticsearch批量插入数据
    Elasticsearch批量插入数据 使用bulk批量操作数据库 1. 创建批量操作文件 格式: {"index":{"_index":"home","_type":"home",""_id":"2"}}...
    99+
    2022-10-18
  • SQL批量插入数据
    MS SQL Server数据库批量插入数据的sql语句总结:第一种:insert into tb_NameList(Name,InsertDate,UpdateDate)values('aa',GETDA...
    99+
    2022-10-18
  • java 批量插入数据
    批量插入数据,常见的使用mybatis foreach 插入的方式,原始的方式和批处理 1,常见的mybatis foreach xml insert into CODEINFO (CODE_TYPE, CODE, MEAN, STAT...
    99+
    2023-09-03
    mybatis mysql 批量插入
  • jdbc使用PreparedStatement批量插入数据的方法
    目录批量插入1. 批量执行SQL语句2. 高效的批量插入批量插入 1. 批量执行SQL语句 当需要成批插入或者更新记录时,可以采用Java的批量更新机制,这一机制允许多条语句一次...
    99+
    2022-11-12
  • MyBatis-Plus 批量插入数据的操作方法
    spring boot+mybatis plus环境,单条插入用的是BaseMapper自带的insert方法 public ApiResult addAnc(Anc anc) ...
    99+
    2022-11-12
  • Mybatis批量插入Oracle数据的方法实例
    目录基本环境需求方案改进带自增 id 的批量插入插入完成之后返回 sessionId注意事项总结Reference基本环境 语言:Java 8 数据库:Oracle ORM 框架:M...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作