foreach 元素的属性主要有 item,index,collection,
open,separator,close.
item 表示集合中每一个元素进行迭代时的别名,该选项为必选
index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置,该选项为可选
open 表示该语句以什么开始,该选项为可选
separator 表示在每次迭代之间以什么符号作为分割符,该选项为可选
close 表示以什么结束,该选项为可选
collection ,在不同情况下,该属性的值不一样,该选项为必选,主要有以下3种情况
如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
如果传入的参数是Map的时候,collection 的属性值为map 的key值
当使用可迭代对象或者数组时,index 是当前迭代的次数,item 的值是本次迭代获取的元素。当使用 Map 对象(或者 Map.Entry 对象的集合)时,index 是键,item 是值。
*****举例说明 :
1、单参数list 类型
调用:
List idList =new ArrayList();
idList.add(1);
idList.add(2);
idList.add(3);
List list = alarmService.list(idList);
map.xml :
select * from vehicle where id in
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
2、传入的参数为array
调用:
int[] arr = new int[] {1,3,6,9};
List list = alarmService.list(arr );
map.xml :
select * from vehicle where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
3、传入的参数为map
调用:
List list =new ArrayList();
list.add(1);
list.add(2);
Map params =new HashMap();
params.put("vehicleIdList",list);
List alarmList =alarmService.list(params);
map.xml :
<if test="vehicleIdList != null ">and vehicle_id in
<foreach item="id" collection="vehicleIdList" open="(" separator="," close=")"> #{id} </foreach>
</if>*****