mybatis foreach 解析

来源:互联网 发布:8080端口怎么开 编辑:程序博客网 时间:2024/06/07 00:32

 

 <select id="findPhotographerByIds" resultType="java.util.HashMap" >

    SELECT * FROM (select 
      M.id,
      M.shop_name,
      area.area_name as area_name,
      M.shop_picture,
      M.shop_url
       FROM pho_photographer M 
      left join dict_area area ON area.area_code = M.area_code) T
      WHERE 1=1 AND  T.id in 
     <foreach collection="array" index="index" item="item" open="(" separator="," close=")">  
            #{item}   
      </foreach> 

  </select>

网上的foreach 看的人眼花缭乱,  记录一个简单点儿的.

collection :   需要遍历的集合类型(参数名)   这个地方需要注意,如果你的参数是一个默认参数,此处为mybatis原生的类型映射,数组:array ,list:list,map:map.

如果是在传参时,启用了参数别名(长用在多参数情况下.) 其值为参数别名.


举例说明: Dao:findPhotographerByIds(String[] ids){}

则:xml配置为    :

 <foreach collection="array" index="index" item="item" open="(" separator="," close=")">  
            #{item}   
      </foreach> 


多参数情况: Dao:findPhotographerByIds(@param("ids")String[] ids,@param String name){}

对应配置应调整为:

 <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">  
            #{item}   
      </foreach> 

0 0