关于mybatis+mysql批量插入的问题
来源:互联网 发布:淘宝店铺一共有多少分 编辑:程序博客网 时间:2024/06/06 05:16
之前在写项目时,会遇到在某个时间点内需要插入多条数据。之前我采用的方式是一次循环插入一条数据,每次插入都是一个过程。1.发起与数据库的链接 2.插入一条数据。
当你需要批量插入成千上万条的时候。就会是这个数量级乘以2,相信大部分的时间是浪费在链接数据库上。
批量插入成千上万条数据,就只需要2个步骤了,链接数据量,插入数据,当然插入数据的时候sql的不同写法,那么执行的效率也会不同,待会我会举一个小栗子。
xml中的写法
<insert id="addDemoList" parameterType="ArrayList"> INSERT INTO `demo` ( userId, financingId`,smashed, bonusAmount) VALUES <foreach collection="list" item="item" index="index" separator=","> ( #{item.userId}, #{item.financingId},#{item.smashed}, #{item.bonusAmount}) </foreach> </insert>传入的参数是一个list
在Mapper中的接口
void addDemoList(List<Demo> item);传入的是的一个实体的list,当然也可以是map的list。具体用哪个可以根据实际情况来使用。
上述xml中打印出来的sql会是这样的
INSERT INTO `smasheggrecord` ( userId, financingId,smashed, bonusAmount)VALUES
(#{item.userId}, #{item.financingId}, #{item.smashed}, #{item.bonusAmount}),(#{item.userId}, #{item.financingId}, #{item.smashed}, #{item.bonusAmount}),(#{item.userId}, #{item.financingId}, #{item.smashed}, #{item.bonusAmount}),(#{item.userId}, #{item.financingId}, #{item.smashed}, #{item.bonusAmount})没错,就是这样一个形式。这样的好处是sql只执行一遍,速度会很快。如果是INSERT INTO `smasheggrecord` ( userId, financingId,smashed, bonusAmount)VALUES(#{item.userId}, #{item.financingId}, #{item.smashed}, #{item.bonusAmount});
INSERT INTO `smasheggrecord` ( userId, financingId,smashed, bonusAmount)VALUES(#{item.userId}, #{item.financingId}, #{item.smashed}, #{item.bonusAmount});
...INSERT INTO `smasheggrecord` ( userId, financingId,smashed, bonusAmount)VALUES(#{item.userId}, #{item.financingId}, #{item.smashed}, #{item.bonusAmount});
这样的形式,那么sql就会执行对应的次数。这也无形的减慢了插入的速度。另外再插一句和这个无关的,如果前端POST过来一个请求,有2个参数和值全都是一模一样,那么后台拿到的会是怎么样的呢?栗子:参数1:params:123参数2:params:123那么后台将会拿到的是params:123,123做个小笔记~
0 0
- 关于mybatis+mysql批量插入的问题
- mybatis关于oracle和mysql批量插入的区别
- mybatis+mysql小批量插入语法以及遇到的问题
- Mybatis的批量插入(oracle、MySQL)
- mybatis的批量插入
- MyBatis批量插入数据(MySql)
- MyBatis批量插入Oracle、MySQL
- MyBatis批量插入数据(MySql)
- mysql 批量插入问题
- Mybatis批量插入数据问题
- 关于mybatis批量问题
- SpringMVC + Mybatis +JSON + mysql 进行批量插入的实例操作
- mybatis针对oracle和mysql高效率批量插入的解决方案
- mybatis批量插入oracle和mysql的写法
- Mybatis+Mysql 批量插入的时候返回主键ID
- mybatis 与sqlserver相关的批量插入的问题
- srpingBoot +mybatis 出现不能批量插入的问题,解决方法
- MyBatis+oracle 批量插入数据的一些问题
- iOS网络判断
- CF 2C Commentator problem
- MSCNN 论文解析(A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection
- jQuery和java后台的jsonp跨域问题
- PullToRefresh实现下拉刷新和上拉加载
- 关于mybatis+mysql批量插入的问题
- 字符串搜索命令 grep
- Swager+Spring请求接口常见错误码
- 【今晚八点云课堂直播分享】构建一站式视频云点播加速平台实践
- 使用CIFilter 为照片添加各种滤镜效果
- 详解Java中的clone方法
- 手机cached free memory(剩余内存)计算方法
- Visual C++内存泄露检测—VLD工具使用说明
- mybaits模糊查询防止sql注入