zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    MVC NonAction属性
    未将对象引用设置到对象的实例
    回调函数callback
    Json详解
    浅谈HTTP中Get与Post的区别
    JQuery $.ajax()方法详解
    C#中Const和Readonly的区别
    全面解释StringBuilder、StringBuffer和String的关系
    基本数据类型的包装类和随机数
    枚举类的使用
  • 原文地址:https://www.cnblogs.com/a-du/p/12697039.html
Copyright © 2011-2022 走看看