Mybaist 注解 foreach 嵌套循环实现批量插入
第一种写法(#使用占位符推荐):
@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 嵌套循环实现批量插入的更多相关文章
- MyBatis动态SQL foreach标签实现批量插入
需求:查出给定id的记录: <select id="getEmpsByConditionForeach" resultType="com.test.beans.Em ...
- Mybatis对oracle数据库进行foreach批量插入操作
MySQL支持的语法 INSERT INTO `tableX` ( `a`, `b`, `c`, `d`, `e` ) VALUES <foreach collection ="lis ...
- mybatis批量插入oracle
<insert id="batchInsert" parameterType="java.util.List"> INSERT INTO TEST( ...
- Mybatis 批量插入
一.首先对于批量数据的插入有两种解决方案(下面内容只讨论和Mysql交互的情况) 1)for循环调用Dao中的单条插入方法 2)传一个List<Object>参数,使用Mybatis的批量 ...
- mybatis使用foreach进行批量插入和删除操作
一.批量插入 1.mapper层 int insertBatchRoleUser(@Param("lists") List<RoleUser> lists);//@Pa ...
- mybatis foreach批量插入数据:Oracle与MySQL区别
mybatis foreach批量插入数据:Oracle与MySQL不同点: 主要不同点在于foreach标签内separator属性的设置问题: separator设置为","分 ...
- Mybatis通过注解方式实现批量插入数据库 及 常见的坑
原文地址:http://f0rb.iteye.com/blog/1207384 MyBatis中通过xml文件配置数据库批量操作的文章很多,比如这篇http://www.cnblogs.com/xcc ...
- Mybatis通过注解方式实现批量插入数据库
原文地址:http://f0rb.iteye.com/blog/1207384 MyBatis中通过xml文件配置数据库批量操作的文章很多,比如这篇http://www.cnblogs.com/xcc ...
- MyBatis 使用 foreach 批量插入
MyBatis 使用 foreach 批量插入 参考博文 老司机学习MyBatis之动态SQL使用foreach在MySQL中批量插入 使用MyBatis一次性插入多条数据时候可以使用 <for ...
随机推荐
- classmethod自己定制
# # 利用描述符原理定义一个@classmethod # class ClassMethod: # def __init__(self,func): # self.func = func # def ...
- 【Linux开发】linux设备驱动归纳总结(四):3.抢占和上下文切换
linux设备驱动归纳总结(四):3.抢占和上下文切换 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- 【3.2】【mysql基本实验】mysql GTID复制(基于空数据的配置)
概述:本质上和传统异步复制没什么区别,就是加了GTID参数. 且可以用传统的方式来配置主从,也可以用GTID的方式来自动配置主从. 这里使用GTID的方式来自动适配主从. 需要mysql5.6.5以上 ...
- Intellij IDEA中使用Debug调试
转自:https://blog.csdn.net/zj420964597/article/details/78662299只是为了方便学习技术,少走弯路,如果有异议,请留言,及时处理!!!
- GitHub从小白到熟悉<四>
GitHub issue 使用教程 创建 一个issue (显示所有bug 或者 说 交流的 问题列表)
- SG函数和SG定理(Sprague_Grundy)
一.必胜点和必败点的概念 P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正确的情况下必胜. 必胜点和必败点的性质: ...
- python网络爬虫(5)BeautifulSoup的使用示范
创建并显示原始内容 其中的lxml第三方解释器加快解析速度 import bs4 from bs4 import BeautifulSoup html_str = """ ...
- 虚拟机无法启动,提示:无法打开内核功能扩展“com.vmware.kext.vmci”: 无此文件或目录
打开 系统偏好设置->安全性与隐私->允许打开 即可
- 一款完美代替微信小程序原生客服消息的工具:
一.设置:无需开发,多种回复(自动+人工) 自动回复形式有3种: 打开客服消息(用户只要和客服互动过一次,再次点击进入,会收到设置好的自动回复) 关键词回复(用户在小程序中回复某个关键词内容时,会 ...
- uoj #46[清华集训2014]玄学
uoj 因为询问是关于一段连续区间内的操作的,所以对操作构建线段树,这里每个点维护若干个不交的区间,每个区间\((l,r,a,b)\)表示区间\([l,r]\)内的数要变成\(ax+b\) 每次把新操 ...