动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

浅析Mybatis的嵌套循环

06-19 16:40 833浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Mybatis有默认的list,array,但是没有默认的map。所以不能直接写collection="map",如果这么写,它会当成是根据map.get(“map”)来取value值,大部分情况下是一个map中是不会有“map”这个key的,于是就是报错。如果你想用这个“map”标识取参数map,就需要保证传入的Map参数有@Param("map")注解。

1.dao的写法:

int getByMap(@param("paramsMap") Map<String,Object> map) 

2.xml的写法:

1)循环key:

<foreach collection="paramsMap.keys" item="k" separator="and">
    ${k} = #{k}
</foreach>

2)循环values

<foreach collection="paramsMap.values" item="v" separator="and">
    ${v} = #{v}
</foreach>

3)循环获取key和值:

<foreach collection="paramsMap.keys" item="k" separator="and"> 
    <if test="null != paramsMap[k]"> 
         ${k} = ${paramsMap[k]}
    </if>
</foreach>

或者一次循环得到key和value值(推荐):

<foreach collection="paramsMap" index="key" item="value">
    ${key} = ${value}
</foreach>

易错点:表达式抒写错误
通常我们设置值的时候,会以#{}的方式,而不是${},如下:

<foreach collection="paramsMap.keys" item="k" separator=",">
    <if test="null != paramsMap[k]">
        ${k} = #{paramsMap[k]}
    </if>
</foreach>

你会发现,取不了值了,${condition[k]} 能取的出值,但#{condition[k]} 取出来的值却实null,正确的写法应该是:

<foreach collection="paramsMap.keys" item="k" separator=",">
    <if test="null != paramsMap[k]">
        ${k} = #{paramsMap[${k}]}
    </if> 
</foreach> 

当然,这只是Mybatis嵌套循环的基本用法,想要深入学习Mybatis嵌套循环的比较复杂的用法的小伙伴可以观看动力节点在线的Mybatis视频教程,学习更多的精深课程。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵652
程序员代码小兵652

113篇文章贡献392215字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Mybatis返回值类型

代码小兵87207-15 12:10

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

深入理解JVM虚拟机

杨晶珍05-12 17:30

发评论

举报

0/150

取消