mybatis使用foreach进行批量保存
mysql下批量保存 mysql支持语法 inset into table values(),(),().... 可以使用foreach进行遍历保存第一种方法<insert id="addEmps" parameterType="queryVo" resultType="user">insert into employee (last_name,email,gender)values<!-- foreach标签,进行遍历 --><!-- collection:遍历的集合,这里是QueryVo的ids属性 --><!-- item:遍历的项目,可以随便写,,但是和后面的#{}里面要一致 --><!-- open:在前面添加的sql片段 --><!-- close:在结尾处添加的sql片段 --><!-- separator:指定遍历的元素之间使用的分隔符 --><!-- 示例sql语句 insert into employee (last_name,email,gender) values(?,?,?),(?,?,?) --><foreach collection="emps" item="emp" separator=",">( #{emp.last_name} , #{email} , #{gender} ) </foreach> </insert> 第二种方法发送多条sql 也是使用foreach,每次遍历一个员工就生成一个完整的sql语句需要配置连接属性运行多个sql语句之间通过分号 ; 进行连接配置allowMultiQueries=true 默认为false
<foreach collection="emps" item="emp" separator=";">
insert into employee (last_name,email,gender)values
( #{emp.last_name} , #{email} , #{gender} ) </foreach>
接口
int addEmps(@(Param("emps") List<Employee> list)
使用Oracle数据库进行批量保存
Oracle不支持values(),(),().....
Oraclez批量保存方式
其中一种
begin
insert into table values();
insert into table values();
end;
<insert id="addEmps" adtabaseId="oracle"> <foreach collection="emps" item="emp" open="begin" close="end;"> insert into employee (id,last_name,email,gender)values oracle不支持自增主键,只有序列,通过序列插入id ( employees.seq.nextval,#{emp.last_name} , #{email} , #{gender} ) </foreach> </insert>
还有一种中间表方式进行批量插入,我没有去了解,这里偷下懒,大家有兴趣可以去了解一下
转载于:https://www.cnblogs.com/a-small-lyf/p/10324788.html
mybatis使用foreach进行批量保存相关推荐
- MyBatis foreach语句批量插入数据
本例技术:Spring+SpringMVC+MyBatis+Oracle 问题描述:需要将程序里的一个集合保存到数据库里,集合的类型对应数据库的一个实体,若在程序里遍历集合再一条条保存到数据库表中有点 ...
- MyBatis批量保存数据
一 .思路 1.首先创建一个实体类(TestEntity),对应批量保存的一条数据 2.Controller获取前台传递的数据(是Map列表,即代码中的paramMapList) 3.Service对 ...
- mybatis多个foreach_使用 Mybatis 的 foreach 批量模糊 like 查询及批量插入
使用 mybatis 平时都是用遍历集合 in ( ) ....,其实还可以多模糊查询和批量操作等其他操作,要明白 foreach 元素的属性主要意义,灵活使用,举例如下. 1.根据多个品牌名字分类, ...
- Mybatis结合Oracle的foreach insert批量插入报错!
2019独角兽企业重金招聘Python工程师标准>>> 最近做一个批量导入的需求,将多条记录批量插入数据库中.解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数 ...
- mybatis操作Oracle数据库批量插入与更新、运行注意事项、属性含义
一.项目需求 针对将近300万用户的用电数据进行统计分析,将结果更新保存Oracle数据库.我需要往一个表里面插入数据,数据量总计在500万条左右.一条一条插入的话非常慢,2万条数据近20分钟,后面就 ...
- mysql list列表批量更新数据,Mybatis传入List实现批量更新的示例代码
Dao层写法 /** * 批量更新新库存 * @param list * @return */ int updateNewStock(@Param(value = "list") ...
- 源码分析 Mybatis 的 foreach 为什么会出现性能问题
背景 最近在做一个类似于综合报表之类的东西,需要查询所有的记录(数据库记录有限制),大概有1W条记录,该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一条查询 SQ ...
- mybatis动态sql,批量插入,批量删除,模糊查询
trim可以去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 "where"."set"以及"values(" 等前缀,或者 ...
- MyBatis学习——foreach标签的使用
一.foreach标签属性解读 MyBatis的foreach标签应用于多参数的交互如:多参数(相同参数)查询.循环插入数据等,foreach标签包含collection.item.open.clos ...
最新文章
- VS Code 调试 OneFlow
- UUID.randomUUID()生成唯一识别码
- 【c语言】求n个整数的和
- C1 FlexGrid 行Style设置问题
- c# winform InvokeRequired 解决跨线程访问控件
- Leetcode题库 32.从上到下打印二叉树(层次遍历 C实现)
- CEV模型与质量甜点算法设计
- redis修改端口号后还是占用6379_Redis分布式缓存分布式集群搭建
- IntelliJ IDEA 2020修改菜单显示大小
- hihocoder 1032 最长回文子串(Manacher)
- python有道-如何用pythonquot;优雅的”调用有道翻译?
- Ubuntu 16.04 安装VNC服务端
- mysql的瓶颈_MySQL 瓶颈分析及优化
- crate和mysql结合利用_create和grant配合使用,对Mysql进行创建用户和对用户授权
- Android 开发佳站3
- html body与页面的距离,html - 如何在TBODY元素之间放置间距
- Docker Windows Containers
- C语言 代码 九九乘法表
- python优点是代码库支持、灵活_Google将限制Python语言的应用 开发社区热议
- python实现堆栈_Python堆栈实现计算器