第一种写法(#使用占位符推荐):

@Insert("<script>"
+ " insert into ${tb} "
+" <foreach collection=\"fields\" item=\"field\" separator = \",\" open='(' close=')'> "
+ "`${field}`"
+"</foreach>"
+ "values"
+" <foreach collection=\"list\" item='mvo' index=\"list_index\" separator = \",\" > "
+"   <foreach collection=\"mvo.keys\" item=\"key\" open='(' close=')' separator = \",\">"
+"    #{mvo.${key}} "
+"   </foreach> "
+"</foreach>"
+ "</script>")
int insertBatch(@Param("list")List<Map<String,Object>> housingList,@Param("fields") Set<String> keys,@Param("tb") String table) throws Exception;

  执行结果:

    insert into

    dmp_department_work ( `functional` , `num` , `power` , `state` , `department` , `table` )

    values ( ? , ? , ? , ? , ? , ? ) ,( ? , ? , ? , ? , ? , ? )

  

第二种写法($不使用占位符):

@Insert("<script>"
+ " insert into ${tb} "
+" <foreach collection=\"fields\" item=\"field\" separator = \",\" open='(' close=')'> "
+ "  `${field}`"
+" </foreach>"
+ "values"
+" <foreach collection=\"list\" item='mvo' index=\"list_index\" separator = \",\" > "
+"   <foreach collection=\"mvo.keys\" item=\"key\" open='(' close=')' separator = \",\">"
+"   '${mvo[key]}' "
+"  </foreach> "
+"</foreach>"
+ "</script>")
int insertBatch(@Param("list")List<Map<String,Object>> housingList,@Param("fields") Set<String> keys,@Param("tb") String table) throws Exception;

  执行结果:

    insert into

    dmp_department_work ( `functional` , `num` , `power` , `state` , `department` , `table` )

    values ( '17' , '1' , '152' , '0' , '1' , 'dmp_data_task' ) , ( '17' , '1' , '153' , '0' , '1' , 'dmp_data_meet' )

注意:

   使用注解实现:

  •  ${}表示直接注入值,  使用#{}符号表示占位取值
  •  map遍历取值三种方式:item.[key] 或 item[key] 或  item.key,如果传入的是java实体,使用item.key取值

Mybaist 注解 foreach 嵌套循环实现批量插入的更多相关文章

  1. MyBatis动态SQL foreach标签实现批量插入

    需求:查出给定id的记录: <select id="getEmpsByConditionForeach" resultType="com.test.beans.Em ...

  2. Mybatis对oracle数据库进行foreach批量插入操作

    MySQL支持的语法 INSERT INTO `tableX` ( `a`, `b`, `c`, `d`, `e` ) VALUES <foreach collection ="lis ...

  3. mybatis批量插入oracle

    <insert id="batchInsert" parameterType="java.util.List"> INSERT INTO TEST( ...

  4. Mybatis 批量插入

    一.首先对于批量数据的插入有两种解决方案(下面内容只讨论和Mysql交互的情况) 1)for循环调用Dao中的单条插入方法 2)传一个List<Object>参数,使用Mybatis的批量 ...

  5. mybatis使用foreach进行批量插入和删除操作

    一.批量插入 1.mapper层 int insertBatchRoleUser(@Param("lists") List<RoleUser> lists);//@Pa ...

  6. mybatis foreach批量插入数据:Oracle与MySQL区别

    mybatis foreach批量插入数据:Oracle与MySQL不同点: 主要不同点在于foreach标签内separator属性的设置问题: separator设置为","分 ...

  7. Mybatis通过注解方式实现批量插入数据库 及 常见的坑

    原文地址:http://f0rb.iteye.com/blog/1207384 MyBatis中通过xml文件配置数据库批量操作的文章很多,比如这篇http://www.cnblogs.com/xcc ...

  8. Mybatis通过注解方式实现批量插入数据库

    原文地址:http://f0rb.iteye.com/blog/1207384 MyBatis中通过xml文件配置数据库批量操作的文章很多,比如这篇http://www.cnblogs.com/xcc ...

  9. MyBatis 使用 foreach 批量插入

    MyBatis 使用 foreach 批量插入 参考博文 老司机学习MyBatis之动态SQL使用foreach在MySQL中批量插入 使用MyBatis一次性插入多条数据时候可以使用 <for ...

随机推荐

  1. Linux 操作命令简

    一.Linux命令及获取帮助 1.Linux命令的格式1)了解Linux命令的语法格式:命令 [选项] [参数]2)掌握命令格式中命令.选项.参数的具体含义a)命令:告诉Linux(UNIX)操作系统 ...

  2. 论文阅读 | Towards a Robust Deep Neural Network in Text Domain A Survey

    摘要 这篇文章主要总结文本中的对抗样本,包括器中的攻击方法和防御方法,比较它们的优缺点. 最后给出这个领域的挑战和发展方向. 1 介绍 对抗样本有两个核心:一是扰动足够小:二是可以成功欺骗网络. 所有 ...

  3. poj2385(基础DP)

    题目链接:http://poj.org/problem?id=2385 题意:最开始Bessie站在树1下面,每一个单位时间有颗苹果从树1或者树2上落下来.每个单位时间Bessie可以移动一次位置,时 ...

  4. 设计模式:策略模式(Stratege)

    首先我们需要知道策略模式与状态模式是如此的相似,就犹如一对双胞胎一样.只不过状态模式是通过改变对象内部的状态来帮助对象控制自己的行为,而策略模式则是围绕可以互换的算法来创建成功业务的.两者都可用于解决 ...

  5. C++11智能指针原理和实现

    一.智能指针起因 在C++中,动态内存的管理是由程序员自己申请和释放的,用一对运算符完成:new和delete. new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针: delete:指向 ...

  6. # vmware异常关机后,虚拟系统无法启动的解决办法

    vmware异常关机后,虚拟系统无法启动的解决办法 先使用everything搜索所有后缀为.lck的文件,这些文件全部删除,如果不确定是否可以删除,先把这些文件转移到桌面,等能启动虚拟系统之后再删除 ...

  7. golang substring

    在java下习惯了String.subString(start,end) 然后再golang继续敲substring木有了,看了下代码,也是原生支持的 但是百度发现有些人竟然把字符串转成字符数组再根据 ...

  8. 在Powershell中使用Group-Object和-GroupBy

    使用Group-Object(group)按组统计 PS C:\> Get-Command -Module Microsoft.PowerShell.LocalAccounts | group ...

  9. LVS、Nginx及HAProxy

    本文转载自 linkedkeeper.com   当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群, ...

  10. java复制文件范例代码

    String url1 = "F:\\SuperMap-Projects\\region.udb";// 源文件路径 try { for(int i=1;i<101;i++) ...