Mybatis foreach 使用与理解(支持Array,List,HashMap及相互嵌套)

Mjing888 8年前

来自: http://my.oschina.net/xiaohelong/blog/608035


        Mybatis foreach 使用与理解(支持List<Hashmap<String,String>>)      
<foreach collection="param3.field" item="field" separator="," open="(" close=")">                                </foreach>
对原始语句的理解:
separator是每一条记录输出后面加上这个(最后一条不加)
open,close是将整个foreach的输出进行概括。
collection是列表或者map等源数据集合
item 是元素具体单个

使用说明
参数传递是使用Entity的,所以的参数都是从entity读取属性,pageJoin实体内嵌的分页实体,在这里定义了一个
List<HashMap<string,string>> filter;(注意要把getter,setter生成好,因为是private的,否则就会出错,这一点容易忽略)
使用实例:
<foreach item="item" index="index" collection="pageJoin.filter">                    
                       <choose>
                           <when test="item.type=='field'">
                              and ${item.field}=#{item.val1}
                           </when>
                           <when test="item.type=='range'">
                              and ${item.field} between #{item.val1} and #{item.val2} 
                           </when>
                           <otherwise>
                             <!-- donothing -->
                           </otherwise>
                        </choose>
</foreach>