Mybatis foreach嵌套遍历Map的key和value
最近做东西,需要向数据库存储一个保存在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
相关推荐
xiuyangsong 2020-11-16
Nishinoshou 2020-11-09
jimgreatly 2020-09-01
dongxurr 2020-08-18
Dullonjiang 2020-08-15
Dullonjiang 2020-08-11
Dullonjiang 2020-08-09
dongxurr 2020-08-08
yunzhonmghe 2020-08-07
jimgreatly 2020-08-03
Dullonjiang 2020-07-30
jimgreatly 2020-07-27
liqiancao 2020-07-26
xiuyangsong 2020-07-26
dongxurr 2020-07-26
mcvsyy 2020-07-26
helloxusir 2020-07-25
牧场SZShepherd 2020-07-20