MyBatis Oracle 批量插入数据

news2024/11/16 1:49:10

MyBatis Oracle 批量插入数据

  • 1.需求描述
  • 2.实现方案
    • 2.1 循环 insert 插入
    • 2.2 insert all 插入
    • 2.3 insert union all 插入
  • 3.分析总结

系统:Win10
JDK:1.8.0_351
IDEA:2022.3.3

1.需求描述

在一次项目中实施过程中,后台需要将地区数据插入到数据库,数据大概三千条左右,本来直接使用循环遍历插入的方式,结果居然需要十几秒的时间,感觉速度太慢了,所以便想办法提高插入数据的速度,经过多番资料查询和验证,结果选定了一款实现方式,特此记录下来。

2.实现方案

数据:3208 条
需求:将数据插入到 Oracle 数据库

2.1 循环 insert 插入

最基础的就是使用 for 循环遍历 list 数据,一个个进行插入

java 代码

...
 //循环插入
 StopWatch started = new StopWatch();
 started.start();//开始计时
 for (Region region : regions) {
     regionMapper.insert(region);
 }
 started.stop();//停止计时
 System.out.println("插入" + list.size() + "条数据耗时: " + started.getTime());
...

mapper 接口

int insert(Region region);

xml 语句

<insert id="insert">
    insert into DATA_REGION(id, name, pid)
    values (#{id}, #{name}, #{pid})
</insert>

这里测试执行了 3 次,平均耗时:15160 ms
在这里插入图片描述

2.2 insert all 插入

这里主要使用的 Oracle 的 INSERT ALL 语法

INSERT ALL
    INTO table_name(col1,col2,col3) VALUES(val1,val2, val3)
    INTO table_name(col1,col2,col3) VALUES(val4,val5, val6)
    INTO table_name(col1,col2,col3) VALUES(val7,val8, val9)
Subquery;

该方法用来批量向数据库中插入数据所用的

java 代码

...
//insert all 插入
StopWatch started = new StopWatch();
started.start();//开始计时
regionMapper.insertAll(regions);
started.stop();//停止计时
System.out.println("插入" + list.size() + "条数据耗时: " + started.getTime());
...

mapper 接口

int insertAll(List<Region> list);

xml 语句

<insert id="insertAll">
    insert all
    <foreach collection="list" item="item" index="index">
        into DATA_REGION(id, name, pid) VALUES (#{item.id},#{item.name},#{item.pid})
    </foreach>
    select 1 from dual
</insert>

这里测试执行了 3 次,平均耗时:8171 ms
在这里插入图片描述

2.3 insert union all 插入

这里是使用 union all 先将各个对象的值查询到一起再批量插入到表中

java 代码

...
//batchInsert
StopWatch started = new StopWatch();
started.start();//开始计时
regionMapper.batchInsert(regions);
started.stop();//停止计时
System.out.println("插入" + list.size() + "条数据耗时: " + started.getTime());
...

mapper 接口

int batchInsert(List<Region> list);

xml 语句

<insert id="batchInsert">
    insert into DATA_REGION(id, name, pid)
    <foreach collection="list" item="item" index="index" separator="union all">
        (
        select #{item.id},#{item.name},#{item.pid} from dual
        )
    </foreach>
</insert>

这里测试执行了 3 次,平均耗时:2619 ms
在这里插入图片描述

3.分析总结

根据上面的三次测试,我们可以得出如下表格

#循环 insert 插入insert all 插入insert union all 插入
平均耗时15.16s8.17s2.62s

所以我最后决定采用第三种方法,不过我这里数据量只有 3000 多条,如果数据量更大,可能要再测试看看。

后续看看还有没有更好的实现方案,如果找到我再添加到文章末尾。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1499991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于H5的旅游攻略平台设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 系统开发相关技术 3 1.1框架技术 3 1.1.1 SSM框架 3 1.1.2 SpringBoot框架 3 1.1.3 Spring框架 3 1.2开发语言 3 1.2.1 HTML 3 1.2.2 JAVA 4 1.2.3 JavaScript 4 1.3数据库 4 1.4本章小结 4 2 系统分析 5 2.1 可行性分析 5 2.2 功能需求分…

南京观海微电子---PCIe协议接口

1. PCIe引脚定义 PCI Express&#xff0c;官方简称PCIe&#xff0c;是计算机总线的一个重要分支, 插槽图片如下&#xff1a; 下表列出在边缘连接器上的PCI Express卡两侧的导线。在印刷电路板&#xff08;PCB&#xff09;的焊接侧为A侧&#xff0c;并且组件侧的B侧。PRSNT1# 和…

Windows Server 2012 R2 安装SNMP服务失败,提示:无法打开匿名级安全令牌。错误:0x8007050543

Windows Server 2012 R2 安装SNMP服务失败&#xff0c;提示&#xff1a;无法打开匿名级安全令牌。错误&#xff1a;0x8007050543 解决方法如下&#xff1a; 1、打开运行&#xff0c;输入&#xff1a;dcomcnfg.exe 2、依次进入&#xff1a;【组件服务】-【计算机】-【我的电脑】…

FMEA视角下的未来:拥抱变化,探索无限可能!

在快速发展的现代社会中&#xff0c;预测未来变得越来越具有挑战性。FMEA&#xff08;失效模式与影响分析&#xff09;作为一种预防性质量工具&#xff0c;虽然主要用于评估产品设计或过程中的潜在故障&#xff0c;但其核心理念——识别风险、预防失误&#xff0c;同样适用于我…

StarCoder 2:GitHub Copilot本地开源LLM替代方案

GitHub CoPilot拥有超过130万付费用户&#xff0c;部署在5万多个组织中&#xff0c;是世界上部署最广泛的人工智能开发工具。使用LLM进行编程辅助工作不仅提高了生产力&#xff0c;而且正在永久性地改变数字原住民开发软件的方式&#xff0c;我也是它的付费用户之一。 低代码/…

基于SSM框架的艺术交流平台设计与实现

目 录 摘 要 I Abstract II 引 言 1 1相关技术 3 1.1 jQuery技术简介 3 1.2 SSM框架简介 3 1.3 Bootstrap框架简介 3 1.4 ECharts框架简介 4 1.5 MVC设计模式简介 4 1.6 Ajax技术简介 4 1.7 MySQL数据库简介 4 1.8本章小结 4 2.1功能需求 5 2.2非功能需求 9 2.3本章小结 10 3系…

C++程序设计-第四/五章 函数和类和对象【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下C程序设计中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 文章目录 前言第四章 函数 函数和类和对象4.1 说明带参数的宏与内联函数有什么不同4.2 全局变量和局部变量有什么区别是怎么实现的…

理解BS期权定价

开局放图 1.完整图示 开局一张图&#xff01;全篇编的尽可能通俗化&#xff0c;有些地方避免不了用公式解释&#xff0c;内容的完整流程图示绘制如下&#xff0c;建议全篇读完后再看流程图。 2.背景知识 期权介绍 首先简单介绍下期权背景知识&#xff0c;期权&#xff08;O…

Gitlab: PHP项目CI/CD实践

目录 1 说明 2 CI/CD 2.1 部署方式一&#xff1a;增量部署 2.1.1 目标服务器准备 2.2.2 Gitlab及Envoy脚本 2.2 部署方式二&#xff1a;镜像构建与部署 2.2.1 推送到私有化容器仓库 准备工作 脚本 要点 2.2.2 推送到hub.docker.com 准备工作 脚本 3 参考&#x…

Take-home questions——L3

Match the spatial domain image to the Fourier magnitude image 1—D 2—B 3—A 4—E 5—C

一分钟安装使用教程,无需服务器,一台电脑就可使用!全网最快速便捷使用Claude 3方法!

随着AI的应用变广&#xff0c;各类AI程序已逐渐普及&#xff0c;尤其是在一些日常办公、学习等与撰写/翻译文稿密切相关的场景&#xff0c;大家都希望找到一个适合自己的稳定可靠的ChatGPT软件来使用。 ChatGPT-Next-Web就是一个很好的选择。它是一个Github上超人气的免费开源…

如果用户被诱导添加了证书甚至根证书,那哪怕用了 HTTPS,使用中间人攻击就可以窃取用户所有信息了?

最近突然想到一个问题&#xff0c;HTTPS 真的足够安全吗&#xff1f;在一些对安全性要求比较高的项目里&#xff0c;能只依赖 HTTPS 来保证数据安全吗&#xff1f; 我们也用过fiddler 、whistle 等代理软件&#xff0c;也知道要能劫持流量后能看到请求和返回的内容需要添加证书…

ChatGPT 升级出现「我们未能验证您的支付方式/we are unable to authenticate」怎么办?

ChatGPT 升级出现「我们未能验证您的支付方式/we are unable to authenticate」怎么办&#xff1f; 在订阅 ChatGPT Plus 时&#xff0c;有时候会出现以下报错 &#xff1a; We are unable to authenticate your payment method. 我们未能验证您的支付方式。 出现 unable to a…

Apollo决策规划 - EM planner

旨在对b站老王所讲的百度Apollo - EM planner算法做浓缩版总结 0 决策规划背景 基于图搜索 优点&#xff1a; 可以得到全局层面最优解&#xff0c;适用于比较低维数的规划问题 缺点&#xff1a; 规划问题维数较高时&#xff0c;面临指数爆炸问题 基于采样 优点&#xff1a;…

各大厂商常用的弱口令集合

Oms呼叫中心 KXTsoft2010 Glodon控制台 admin TRENDnet趋势网络摄像头 admin/admin MOBOTIX-视频监控 admin/meinsm 思科Cisco 没有原始密码, 第一次登录时需要创建 DRS admin/1234 Honeywell admin/1234 安迅士Axis root/pass, 新安迅士摄像头在用户第一登录时要求创建…

Winform窗体随着屏幕的DPI缩放,会引起窗体变形及字体变形,superTabControl标签字体大小不匹配

一、前言 superTabControl做的浏览器标签(cefsharp)在缩放比例(125%,150%时字体不协调) 物联网浏览器,定制浏览器,多媒体浏览器(支持H264)参考栏目文章即可 二、配置参数 app.manifest参数 dpiAware =true <application xmlns="urn:schemas-microsoft-c…

保持自律,改变形象,认真对待自己

不知道一年365天里究竟有多少个节日&#xff0c;昨天网络上刚过了“女生节”&#xff0c;今天又来了“三八妇女节”。笔者从来都是女权支持者&#xff0c;但也主张切勿支持过了头而形成“女尊男卑”&#xff0c;认为应当遵循“顺其自然”这一规律为好。 有鉴于此&#xff0c;本…

LORA: LOW-RANK ADAPTATION OF LARGE LAN-GUAGE MODELS

TOC 1 前言2 方法2.1 LOW-RANK-PARAMETRIZED UPDATE MATRICES 1 前言 1) 提出背景 大模型时代&#xff0c;通常参数都是上亿级别的&#xff0c;若对于每个具体任务都要去对大模型进行全局微调&#xff0c;那么算力和资源的浪费是巨大的。 根据流形学习思想&#xff0c;对于数…

基于SSM的房客源信息管理系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 SSM框架 3 1.2 Vue框架 3 1.3 ECharts 3 1.4 JQuery技术 3 1.5 本章小结 4 2系统分析 5 2.1 需求分析 5 2.2 非功能需求 8 2.3 本章小节 8 3 系统设计 9 3.1 系统总体设计 9 3.1.1 系统体系结构 9 3.1.2 系统目录结构 9 3…

高效办公-浏览器基本操作

日常我们使用电脑&#xff0c;其实很大部分是用于网络功能&#xff0c;这里面除了客户端程序剩余的就是通过我们的浏览器获取信息或者使用业务系统了&#xff0c;这里就简单学习下浏览器基本常识与操作。 一、浏览器是什么&#xff1f; 白话讲浏览器就是一个软件&#xff0c;我…