foreach是用来对3种类型的对象进行循环操作的,关于foreach的基础知识请看:Mybatis 示例之 foreach (上)
这节讲的是foreach中map的用法。
map和List,array相比,map是用K,V存储的,在foreach中,使用map时,index属性值为map中的Key的值。
因为map中的Key不同于list,array中的索引,所以会有更丰富的用法。
第一个简单例子:
<insert id="ins_string_string"> insert into string_string (key, value) values <foreach item="item" index="key" collection="map" open="" separator="," close="">(#{key}, #{item})</foreach> </insert>
如果map中有两对K,V,那么执行SQL如下:
DEBUG [main] - ==> Preparing: insert into string_string (key, value) values (?, ?) , (?, ?) DEBUG [main] - ==> Parameters: key 1(String), value 1(String), key 2(String), value 2(String) DEBUG [main] - <== Updates: 2
下面再看一个select的例子:
<select id="sel_key_cols" resultType="int"> select count(*) from key_cols where <foreach item="item" index="key" collection="map" open="" separator="AND" close="">${key} = #{item}</foreach> </select>
上述SQL执行日志如下:
DEBUG [main] - ==> Preparing: select count(*) from key_cols where col_a = ? AND col_b = ? DEBUG [main] - ==> Parameters: 22(Integer), 222(Integer) DEBUG [main] - <== Total: 1
最后,如果不考虑元素的顺序和map中Key,map和list,array可以拥有一样的效果,都是存储了多个值,然后循环读取出来。
如果有这方面的问题,欢迎留言提问。若有宝贵意见,欢迎指出。
Mybatis 示例之 foreach (下),布布扣,bubuko.com
原文:http://blog.csdn.net/isea533/article/details/22336991