Mybatis循环map的一些技巧

来源:互联网 发布:软件二次开发价格标准 编辑:程序博客网 时间:2024/05/22 13:46

注:Map类型没有默认的map,所以不能直接写collection="map",如果这么写,需要保证传入的Map参数有@Param("map")注解。


循环key:

[java] view plaincopy
  1. <foreach collection="condition.keys" item="k" separator="and">   
  2.     ${k} = #{k}    
  3. </foreach>   

循环values

[java] view plaincopy
  1. <foreach collection="condition.values" item="v" separator="and">   
  2.     ${v} = #{v}    
  3. </foreach>   

循环获取key和值:

[java] view plaincopy
  1. <foreach collection="condition.keys" item="k" separator="and">   
  2.     <if test="null != condition[k]">    
  3.         ${k} = ${condition[k]}    
  4.     </if>  
  5. </foreach>   

通常我们设置值的时候,会以#{}的方式,而不是${},如下

[java] view plaincopy
  1. <foreach collection="condition.keys" item="k" separator="and">   
  2.     <if test="null != condition[k]">    
  3.         ${k} = #{condition[k]}    
  4.     </if>  
  5. </foreach>   

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

[java] view plaincopy
  1. <foreach collection="condition.keys" item="k" separator="and">   
  2.     <if test="null != condition[k]">    
  3.         ${k} = #{condition[${k}]}  
  4.     </if>  
  5. </foreach>   

0 0