mybatis 之foreach collection 的3种用法

foreach 元素的属性主要有 item, index,collection,open,separator,close.

item 表示集合中每一个元素进行迭代时的别名,该选项为必选

index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置,该选项为可选

open 表示该语句以什么开始,该选项为可选

separator 表示在每次迭代之间以什么符号作为分割符,该选项为可选

close 表示以什么结束,该选项为可选

collection ,在不同情况下,该属性的值不一样,该选项为必选,主要有以下3种情况

  1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list

   2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array

   3. 如果传入的参数是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

        #{id}



2、传入的参数为array 

调用:

int[] arr  = new int[] {1,3,6,9};

List list = alarmService.list(arr ); 

map.xml :

select * from vehicle where id in

        #{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 :

and vehicle_id in 

  #{id}  


你可能感兴趣的:(mybatis 之foreach collection 的3种用法)