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 ...
随机推荐
- 【Linux开发】linux设备驱动归纳总结(十):1.udev&misc
linux设备驱动归纳总结(十):1.udev&misc xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- Markdown用法说明(用此篇博客做示例)
一份好的博客文档离不开一个优秀的编辑器.借此篇文章介绍一下编写该博客markdown的语法,后续再增加介绍其他语法,方便大家写出更好更漂亮的文档.点击左上角github,有主题源码哦 一份好的博客文档 ...
- Flume概述
flume是分布式的,可靠的,用于从不同的来源有效收集 聚集 和 移动 大量的日志数据用以集中式的数据存储的系统. 是apache的一个顶级项目. 系统需求:jdk1.6以上,推荐java1.7
- Find Duplicate Subtrees
Given a binary tree, return all duplicate subtrees. For each kind of duplicate subtrees, you only ne ...
- .Net Core Web应用加载读取Json配置文件
⒈添加Json配置文件并将“复制到输出目录”属性设置为“始终复制” { "Logging": { "LogLevel": { "Default&quo ...
- UOJ46 玄学
题目 一个比较自然的想法是线段树维护二进制分组. 因为我们询问的是一段连续的操作的积,所以我们可以建一棵线段树,每个节点存储当前区间各个操作的积. 这里的操作的积指的是把一系列操作做完之后区间每个位置 ...
- python并发编程-进程池线程池-协程-I/O模型-04
目录 进程池线程池的使用***** 进程池/线程池的创建和提交回调 验证复用池子里的线程或进程 异步回调机制 通过闭包给回调函数添加额外参数(扩展) 协程*** 概念回顾(协程这里再理一下) 如何实现 ...
- Codeforces 1194D. 1-2-K Game
传送门 先考虑只能走 $1,2$ 步的情况,设 $p[i]$ 表示当 $n=i$ 时先手是否必胜 自己手玩一下发现 $p$ 就是 $011011011...011$ 这样循环(下标从 $0$ 开始,其 ...
- redis 学习(13)-- BitMap
BitMap 什么是 BitMap BitMap,即位图,其实也就是 byte 数组,用二进制表示,只有 0 和 1 两个数字. 如图所示: 重要 API 命令 含义 getbit key offse ...
- jQuery选择器引入
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...