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进行批量保存相关推荐

  1. MyBatis foreach语句批量插入数据

    本例技术:Spring+SpringMVC+MyBatis+Oracle 问题描述:需要将程序里的一个集合保存到数据库里,集合的类型对应数据库的一个实体,若在程序里遍历集合再一条条保存到数据库表中有点 ...

  2. MyBatis批量保存数据

    一 .思路 1.首先创建一个实体类(TestEntity),对应批量保存的一条数据 2.Controller获取前台传递的数据(是Map列表,即代码中的paramMapList) 3.Service对 ...

  3. mybatis多个foreach_使用 Mybatis 的 foreach 批量模糊 like 查询及批量插入

    使用 mybatis 平时都是用遍历集合 in ( ) ....,其实还可以多模糊查询和批量操作等其他操作,要明白 foreach 元素的属性主要意义,灵活使用,举例如下. 1.根据多个品牌名字分类, ...

  4. Mybatis结合Oracle的foreach insert批量插入报错!

    2019独角兽企业重金招聘Python工程师标准>>> 最近做一个批量导入的需求,将多条记录批量插入数据库中.解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数 ...

  5. mybatis操作Oracle数据库批量插入与更新、运行注意事项、属性含义

    一.项目需求 针对将近300万用户的用电数据进行统计分析,将结果更新保存Oracle数据库.我需要往一个表里面插入数据,数据量总计在500万条左右.一条一条插入的话非常慢,2万条数据近20分钟,后面就 ...

  6. mysql list列表批量更新数据,Mybatis传入List实现批量更新的示例代码

    Dao层写法 /** * 批量更新新库存 * @param list * @return */ int updateNewStock(@Param(value = "list") ...

  7. 源码分析 Mybatis 的 foreach 为什么会出现性能问题

    背景 最近在做一个类似于综合报表之类的东西,需要查询所有的记录(数据库记录有限制),大概有1W条记录,该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一条查询 SQ ...

  8. mybatis动态sql,批量插入,批量删除,模糊查询

    trim可以去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 "where"."set"以及"values(" 等前缀,或者 ...

  9. MyBatis学习——foreach标签的使用

    一.foreach标签属性解读 MyBatis的foreach标签应用于多参数的交互如:多参数(相同参数)查询.循环插入数据等,foreach标签包含collection.item.open.clos ...

最新文章

  1. VS Code 调试 OneFlow
  2. UUID.randomUUID()生成唯一识别码
  3. 【c语言】求n个整数的和
  4. C1 FlexGrid 行Style设置问题
  5. c# winform InvokeRequired 解决跨线程访问控件
  6. Leetcode题库 32.从上到下打印二叉树(层次遍历 C实现)
  7. CEV模型与质量甜点算法设计
  8. redis修改端口号后还是占用6379_Redis分布式缓存分布式集群搭建
  9. IntelliJ IDEA 2020修改菜单显示大小
  10. hihocoder 1032 最长回文子串(Manacher)
  11. python有道-如何用pythonquot;优雅的”调用有道翻译?
  12. Ubuntu 16.04 安装VNC服务端
  13. mysql的瓶颈_MySQL 瓶颈分析及优化
  14. crate和mysql结合利用_create和grant配合使用,对Mysql进行创建用户和对用户授权
  15. Android 开发佳站3
  16. html body与页面的距离,html - 如何在TBODY元素之间放置间距
  17. Docker Windows Containers
  18. C语言 代码 九九乘法表
  19. python优点是代码库支持、灵活_Google将限制Python语言的应用 开发社区热议
  20. python实现堆栈_Python堆栈实现计算器

热门文章

  1. Broadcast Receiver广播接收器
  2. Java编程之正则表达式
  3. dedecms的特性-----不完整
  4. 注册修复动态链接库DLL文件
  5. python之路---迭代器和生成器
  6. LocalStorage、SessionStorage
  7. gitolite搭建
  8. valgrind的说明使用和原理
  9. BZOJ 1492: [NOI2007]货币兑换Cash [CDQ分治 斜率优化DP]
  10. 文件夹差异文件对比工具 meld