mybatis批量夺标添加_MyBatis+MySQL同时执行多条SQL,实现多表插入数据
相信很多人都遇到过往Mybatis的Mapper.xml文件粘贴SQL的时候,因为多了一个’;’而导致SQL报错的情形吧。
难道就不能执行多条SQL了么?其实是可以的。在分表的情况下,这种需求是强烈的,比如在大批量插入数据的情形下,同时为了达到数据与表名之间的关系能够相互推算,必须实现不同数据插入不同的表,最简单的实现就是,通过数据计算Table ID,然后根据Table ID插入不同的表,程序内部做循环,但如果数据量达到百万或者千万级别,这种性能是让人无法忍受的。类似下面的SQL
insert into Table_Name_${tableId}
(
XXX1,
XXX2,
XXX3
)
VALUES
(
#{xxx1,jdbcType=BIGINT},
#{xxx2,jdbcType=BIGINT},
#{xxx3,jdbcType=BIGINT}
)
单条和List批量插入,性能相差到底多少?网上也有测试,有的说只有几倍,但我的个人项目而言,性能差距是几十倍。用传统MyBatis,单条插入1000条数据,需要30秒,但如果批量的话,插入速度大概是1秒2000-3000条,批量插入的性能比单条插入的性能提升了整整60-100倍。
废话那么多,怎么实现呢?首先,你需要配置你的jdbc url,加入如下参数(其它参数已经省略,我使用的连接池是druid)。
jdbc:mysql://127.0.0.1:3306/xxx?allowMultiQueries=true
然后,在Mapper.xml里面,就能够欢快的用如下SQL实现多表动态插入了
insert into TABLE_NAME_${item.tableId}
(
XXX1,
XXX2,
XXX3
)
VALUES
(
#{item.xxx1,jdbcType=BIGINT},
#{item.xxx2,jdbcType=BIGINT},
#{item.xxx3,jdbcType=BIGINT},
)
当然了,肯定不止是插入,其它操作依然适用。
mybatis批量夺标添加_MyBatis+MySQL同时执行多条SQL,实现多表插入数据相关推荐
- mysql 造1亿条记录的单表--大数据表
读写文件 背景及木:现有数据1000w单表,为压力测试准备1亿条数据. 步骤: 1.将1000w条记录,除id外都导入到多个文件中: //DELIMITER DROP PROCEDURE if EXI ...
- mysql 并行执行sql_同时执行多条sql
mysql怎么一次执行多条SQL语句 mysql一次执行多条SQL语句的操作方法和步骤如下: 首先,在桌面上,单击" Navicat For Mysql"图标,如下图所示. 其次, ...
- PHP-CRUD-API:将 REST API 添加到 MySQL/MariaDB、PostgreSQL、SQL Server 或 SQLite 数据库的单个文件 PHP 脚本
https://github.com/mevdschee/php-crud-api 将 REST API 添加到 MySQL/MariaDB.PostgreSQL.SQL Server 或 SQLit ...
- SQL性能优化第二篇之Mybatis如何能够执行多条SQL
在第一篇基础上,数据库能够成功执行语句,但是放到Java代码中会报错有木有. 原来,mybatis在我们使用链接连接数据库时,需要我们手动在连接上加上代码: &allowMultiQuerie ...
- python执行mysql多个sql语句_mysql -- 一次执行多条sql语句
最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...
- mysql数据库会同时执行sql吗_mysql 一次执行多条sql语句
最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...
- c mysql并行多条sql_Linux上使用C语言执行多条SQL命令访问MYSQL数据库的有关问题...
Linux下使用c语言执行多条SQL命令访问mysql数据库的问题 Linux(Ubuntu10.04)系统,MYSQL5.1数据库,C语言! 数据库中有两张表:表A.B! 使用C语言从表A中查询数据 ...
- jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...
数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...
- Jmeter JDBC执行多条SQL
今天在编写自动化回归脚本的时候,需要在jmeter的jdbc请求中执行多条sql,在百度里搜索了一些文章,按照网上提供的步骤,发现不起作用,后来发现是作者的截图误导了,为了让后面的同学少走弯路,这里我 ...
最新文章
- 刷新页面时间不重置 前端倒计时_brackets:前端开发工程师必备编辑器之一
- 边框border属性总结
- python线程监控_Python实现线程状态监测简单示例
- 为高考学子加油,Java快速开发平台,JEECG 3.7.6高考性能增强版本发布
- 003-redis-命令-key操作,字符串操作
- 第8天 NSD NETWOEK
- 【转】oracle内置函数 trunc 使用
- Java设计模式笔记------设计原则完结
- php5apache2.dll,Apache2.2.8 + PHP5.2.5不能加载php5apache2.dll
- Git教程 git pull 和 git clone的区别
- 基于Java的杨辉三角
- 【VMware vSAN 7.0】4.8 有关 vSAN 许可证的注意事项—我们有软硬件解决方案
- 由四位央行官员为你制作的“数字货币”说明书
- 科学计算机调成了fx,科学计算器怎么编程
- B站视频下载器,可以下载到电脑后保存,畅享视频下载
- 当我们在谈论瑞幸咖啡的时候,我们谈论什么?
- 亚马逊服务器升降配和增/减磁盘
- 关于SASE与安全市场的那些事
- 天干地支计算年月日时
- 视觉工程师面试50问