mybatis获取map中的key和value

Posted 梦Dreamer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis获取map中的key和value相关的知识,希望对你有一定的参考价值。

    方式一:

    dao接口

int updateByBatch(@Param("content") Map<String, Integer> alreadySoldNumMap);
    mapper

<update id="updateByBatch" parameterType="java.util.Map">  
        update COUPON_CATEGORY  
        <trim prefix="set" suffixOverrides=",">  
              
            <trim prefix="ALREADY_SOLD_NUM = case" suffix="end,">  
               <foreach collection="content.keys" item="key" index="index">  
                     when ID=#key then ALREADY_SOLD_NUM+#content[$key]  
                </foreach>
            </trim>  
              
        </trim>  
        where  
<!-- 循环key  -->
        <foreach collection="content.keys" separator="or" item="key" index="index">  
            ID=#key  
        </foreach>  
    </update>
    这种方式#content[$key]获取map中的value,传递的map中的key只能是String类型,如果是其他类型,得到的value是null。#content[$key]还可以写成$content[key]方式。
<!-- 循环value  -->
<foreach collection="content.values" separator="or" item="value" index="index">  
     ALREADY_SOLD_NUM=#value  
</foreach> 

    方式二:如果传入的map的key要适用所有类型,可以使用下面的方式

                 遍历Map中的entrySet,然后把key扔进index里面,value扔进item中。

    例如:dao接口,map的key用Long类型

int updateByBatch(@Param("content") Map<Long, Integer> alreadySoldNumMap);

     mapper

<update id="updateByBatch" parameterType="java.util.Map">  
        update COUPON_CATEGORY  
        <trim prefix="set" suffixOverrides=",">  
              
            <trim prefix="ALREADY_SOLD_NUM = case" suffix="end,">  
               <foreach collection="content.entrySet()" item="value" index="key">  
                     when ID=#key then ALREADY_SOLD_NUM+#value  
                </foreach>
            </trim>  
              
        </trim>  
        where  
        <foreach collection="content.keys" separator="or" item="key" index="index">  
            ID=#key  
        </foreach>  
    </update>

参考博客: http://blog.csdn.net/clementad/article/details/55099432

    另附:

    在解决此问题的过程当中,使用的是测试类,可以就是在console中打印不出sql语句来。参考了这篇文章《mybatis结合log4j打印SQL日志》,找到了sql语句。

    小编使用的方法是直接调试出sql语句。SimpleExecutor.class在mybatis.jar包里面。


以上是关于mybatis获取map中的key和value的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis foreach嵌套遍历Map的key和value

如何通过获取map中的key来获得与key对应的value值,进行运算

mybatis里怎么获取传进去的map集合中的key

Map四种获取key和value值的方法,以及对map中的元素排序(转)

java中的map怎么根据key值修改value值?

java怎么通过key值获取value值