Mybatis foreach批量插入
1、foreach的属性
item:集合中元素迭代时的别名,必填
index:在list和array中,index是元素的序号;在map中,index是元素的key,可选
open:foreach代码的开始符号,一般是 ‘(’ 并和 ')' 合用,常用在in(),values()时,可选
separator:元素之间的分隔符,可选
close:foreach代码的关闭符号,一般是 ')' 并和 '('合用,常用在in(),values()时,可选
collection:foreach迭代的对象,作为入参时,List对象默认用 list 代替,数组对象用 array代替。Map对象没有默认的键。
同时可以在作为入参时使用@param("xxx")来设置键,这时,默认的list、array将会失效。
官方说明:
注意 你可以将一个 List 实例或者数组作为参数对象传给 MyBatis,当你这么做的时候,MyBatis 会自动将它包装在一个 Map 中并以名称为键。List 实例将会以“list”作为键,而数组实例的键将是“array”。
2、示例:
dao:
int batchInsert(List<Coupon> coupons);
Mapper:
<insert id="batchInsertMiCoupon" parameterType="java.util.List">
INSERT INTO
mi_coupon
(
xxx
)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.xxx,jdbcType=VARCHAR}
)
</foreach>
</insert>
另外需要注意,批量插入List集合的大小不要超过500,200为宜,否则插入也会很慢,过多的话甚至一条都不能入库且没有报错信息。
3、mybatis 批量入库参数一个为集合,一个为字符串的情况
// Map组装参数
Map<String, Object> param = new HashMap<>(4);
param.put("subProductIdsList", subProductIdsList);
param.put("comProductId", comProductId);
// dao
@Override
public int batchInsert(Map<String, Object> param) {
return this.getSqlSessionTemplate().insert(NAMESPACE + ".batchInsert", param);
}
// Mapper.xml
<insert id="batchInsert">
insert into xxx(com_product_id, sub_product_id)
values
<foreach collection="subProductIdsList" item="item" index="index" separator=",">
(
#{comProductId},
#{item,jdbcType=VARCHAR}
)
</foreach>
</insert>
批量更新
<!--批量更新分集视频状态为审核中-->
<update id="batchUpdateAuditStatus" parameterType="java.util.List">
update cp_video
set
audit_status='1'
where id in
<foreach collection="list" index="index" item="item" separator="," open="(" close=")">
#{item,jdbcType=BIGINT}
</foreach>
</update>
END
Mybatis foreach批量插入的更多相关文章
- mybatis foreach批量插入数据:Oracle与MySQL区别
mybatis foreach批量插入数据:Oracle与MySQL不同点: 主要不同点在于foreach标签内separator属性的设置问题: separator设置为","分 ...
- MyBatis 使用 foreach 批量插入
MyBatis 使用 foreach 批量插入 参考博文 老司机学习MyBatis之动态SQL使用foreach在MySQL中批量插入 使用MyBatis一次性插入多条数据时候可以使用 <for ...
- Mybatis+mysql批量插入性能分析测试
前言 今天在网上看到一篇文章(后文中的文章指的就是它) https://www.jianshu.com/p/cce617be9f9e 发现了一种有关于mybatis批量插入的新方法,而且看了文章发现我 ...
- mybatis之批量插入
一.导入功能优化 普通for循环,对于导入大量数据时非常耗时.可以通过Mybatis的批量插入功能提高效率.每批次导入的数据不能太多,否则会报错.通过测试发现,每批次200条为宜. 测试结果: 开启事 ...
- mysql基础---->mybatis的批量插入(一)
这里面记录一下使用mybatis处理mysql的批量插入的问题,测试有可能不准.只愿世间风景千般万般熙攘过后,字里行间,人我两忘,相对无言. mybatis的批量插入 我们的测试主体类是springb ...
- mybatis + mysql 批量插入、删除、更新
mybatis + mysql 批量插入.删除.更新 Student 表结构 批量插入 public int insertBatchStudent(List<Student> studen ...
- mybatis+mysql批量插入和批量更新、存在及更新
mybatis+mysql批量插入和批量更新 一.批量插入 批量插入数据使用的sql语句是: insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo, ...
- MyBatis原生批量插入的坑与解决方案!
前面的文章咱们讲了 MyBatis 批量插入的 3 种方法:循环单次插入.MyBatis Plus 批量插入.MyBatis 原生批量插入,详情请点击<MyBatis 批量插入数据的 3 种方法 ...
- mybatis中批量插入的两种方式(高效插入)
MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用 ...
随机推荐
- log() exp()函数
1 对数函数表示法 import numpy as np import math print('输出自然底数e:',math.e) # np表示法 # np.log()是以e为底的自然对数 print ...
- Service层获取HttpServletRequest request
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/liuyunshengsir/article/details/78183058HttpServletR ...
- redis 锦集
redis 锦集url:http://blog.csdn.net/lqadam/article/category/7479450 1. redis 排序 2.redis 慢查询.位数组和事务 3.re ...
- hibernate 1 连接数据库、操作表
ormapping(对象关系映射):数据库操作框架 缺点: 1.因为hql语句是hibernate内部自动生成,程序员干预不了,不可把控 2.功能比较复杂时不建议使用 优点: 1.比较简单. 2.有数 ...
- JMeter常用的4种参数化方式-操作解析
目录结构 一.JMeter参数化简介 1.JMeter参数化的概念 2.JMeter参数化方式之使用场景对比 二.JMeter参数化的4种主要方式-操作演练 1.User Parameters(用户参 ...
- 基于opencv简单的图片截取
import xml.etree.ElementTree as ET import os, cv2 from tqdm import tqdm annota_dir = 'C:\\Users\\Adm ...
- (4.24)【mysql、sql server】分布式全局唯一ID生成方案
参考:分布式全局唯一ID生成方案:https://blog.csdn.net/linzhiqiang0316/article/details/80425437 分表生成唯一ID方案 sql serve ...
- tz汇报
不爽,不满意,存在太多Bug,汇报前的了解不充分,了解到了有那些领导参加,但是没有具体了解领导的时间安排,没有按照领导的时间调整汇报提纲及思路,汇报到1个半小时,领导需要参加会议,提前离开,没能够与领 ...
- 【IO流】FileInputStream FileOutputStream BufferInputStream BufferOutputStream
FileInputStream IO流用来处理设备之间的数据传输. Java对数据的操作是通过流的方式. Java用于操作流的类都在IO包中. 流按流向分为两种:输入流,输出流. 流按操作类型分为两种 ...
- python 发送kafka
python 发送kafka大体有三种方式 1 发送并忘记(不关注是否正常到达,不对返回结果做处理) 1 import pickle 2 import time 3 from kafka import ...