mybatis 之foreach collection 的3种用法

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>***** 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值