Mybatis foreach嵌套遍历Map的key和value
2023-09-14 08:57:37 时间
最近做东西,需要向数据库存储一个保存在HashMap的key和value中的数据。具体的结构大致是Map<Object, Set<String>>。
数据库中需要保存两个个字段:1.key中对象的id,set中的多个string,显然id和set中的string是1对多的关系;需要嵌套循环。
一开始怀疑Mybatis能否做到这样灵活sql,经过尝试,证明了Mybatis的强大。
具体做法:(Oracle数据库)
1
2
3
4
5
6
7
8
9
|
< insert id= "saveMatchResult" > INSERT INTO sp4_acl_so (acl_id, so_uuid__proc_def_id) <foreach collection= "aclDeviceMap.keys" index = "index" item= "item" separator= "UNION ALL" > <foreach collection= "aclDeviceMap[item]" index = "index_set" item= "set" separator= "UNION ALL" > SELECT #{item.aclId}, #{ set } FROM DUAL </foreach> </foreach> </ insert > |
aclDeviceMap:就是在接口中使用@Param("aclDeviceMap")标注了变量
使用
aclDeviceMap.keys可以取到所有的key,遍历。
内层循环中使用
aclDeviceMap[item]类似aclDeviceMap.get("key")取当前key对应的value值。由于value是set所以还需要遍历。
结果保存成功。再次膜拜强大的Mybatis。
参考:http://btweibin.iteye.com/blog/1949534
相关文章
- Struts标签<s:iterator>遍历访问复杂Map对象
- Java Map遍历方式的选择
- Java实现 LeetCode 769 最多能完成排序的块(单向遍历)
- Java实现 LeetCode 566 重塑矩阵(遍历矩阵)
- Java中如何遍历Map对象的4种方法
- Java遍历Map键、值。获取Map大小的方法
- golang template包用法:range遍历数组
- Java中如何遍历Map对象的4种方法
- 剑指 Offer 37. 序列化二叉树-深度优先遍历-力扣双百代码
- 剑指 Offer II 118. 多余的边-记忆搜索深度优先遍历
- 623. 在二叉树中增加一行-深度优先遍历
- 144. 二叉树的前序遍历
- 微信小程序自动化测试实战,支持录制回放、智能遍历
- 文件包含和目录遍历区别——目标都是信息泄露,但手段一个是利用函数来包含web目录以外的文件,另外一个是对web路径访问权限设置不严格导致
- 算法 dfs —— 将二叉树 先序遍历 转为 链表
- golang map遍历随机的问题
- 【C++】第十一篇(基础)STL map创建、遍历、插入、删除等(详解)