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數據庫)
<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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM