关于mybatis标签<foreach>的使用总结

我们在使用mybatis循环遍历的时候,经常会用到<foreach>标签,如下:

<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
   #{item}
</foreach>

这里面有6个元素,需要注意,分别是:

collection ---->    表示需要迭代的元素类型,很复杂,之后重点说。

item   --->   迭代元素项,随便填,但是要和标签对里面的#{ }变量保持一致即可。

index   --->   索引,随便填

open  --->   开始位置,定死了是“(”。

seprator  --->   分隔符,定死了是","。

close    --->     结束位置,定死了是“)”。

综上所述,我们 最需要关注的是collection这项。根据你的入参又可分为一下若干种情况。

1)array;   2)set;   3)list;   4)map   5)对象,里面包含有array,set,list,map

准备工作:

以下是我数据库测试的表结构:

CREATE TABLE `son` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(50) DEFAULT NULL COMMENT '名称',
  `father_id` bigint(20) DEFAULT NULL COMMENT '父亲id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

实体类:

package com.chenjianwen.model;

public class Son {
    private Long id;

    private String name;

    private Long fatherId;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Long getFatherId() {
        return fatherId;
    }

    public void setFatherId(Long fatherId) {
        this.fatherId = fatherId;
    }
}

一、array

1)dao层方法:

List<Son> selectUsers(Long[] ids);

2)xml文件查询语句:

注意点总结:

1、parameterType,由于我的dao层方法入参虽是数组,但却是Long类型,所以这里是parameterType = java.lang.Long2.

2、collection,由于这里是数组,所以这里写array

3、这里随便写什么,只要两者保持一致即可

二、set

1)dao层方法:

List<Son> selectUsers(Set<Son> ids);

2)xml文件语句

1、由于dao层入参是Set,所以这里parameterType = java.util.Set

2、collection这里只能是collection,我试过set竟然不行

3、这个随便写,保持一致即可。

三、list

1)dao层方法:

List<Son> selectUsers(List<Son> ids);

2)xml文件语句

1、由于入参是List,所以这里parameterType = java.util.List

2、collection属性是list,当然也可以是collection

3、随便写,保持一致即可。

四、map

Set<Long> idList = new HashSet<>();
  idList.add(1L);
  idList.add(2L);
  idList.add(3L);
  idList.add(4L);
  idList.add(5L);
Map<String,Object> paraMap = new HashMap<>();
paraMap.put("idMap",idList);

这里现构造一个map的入参,可见是将一个集合(list或set)作为map的value。key值是"idMap";

1)dao层方法

List<Son> selectUsers(Map<String,Object> param);

2)xml文件语句

1、由于dao层方法入参是map,所以这里parameterType = java.util.Map

2、重点注意:这里的collection属性必须是这个map的key值,即为"idMap";

3、还是一样,随便写,保持一致即可。

五、对象中的array

对象中的属性如下所示:

public class SonParam {

    private Long[] idArray;

    public Long[] getIdArray() {
        return idArray;
    }

    public void setIdArray(Long[] idArray) {
        this.idArray = idArray;
    }
}

1)dao层方法:

List<Son> selectUsers(SonParam sonParam);

2)xml文件语句

1、入参是对象,所以这里parameterType是该对象的引用路径

2、collection属性,这里注意了,他和该对象SonParam里面变量名保持一致

3、随便写,保持一致即可。

六、对象中的set

对象中的属性如下所示:

public class SonParam {

    private Set<Long> idSet;

    public Set<Long> getIdSet() {
        return idSet;
    }

    public void setIdSet(Set<Long> idSet) {
        this.idSet = idSet;
    }
}

1)dao层方法:

List<Son> selectUsers(SonParam sonParam);

2)xml文件语句

1、入参是对象,所以这里parameterType是该对象的引用路径

2、collection属性,这里注意了,他和该对象SonParam里面变量名保持一致

3、随便写,保持一致即可。

七、对象中的list

对象中的属性如下所示:

public class SonParam {

    private Set<Long> idList;

    public Set<Long> getIdList() {
        return idList;
    }

    public void setIdList(Set<Long> idList) {
        this.idList = idList;
    }
}

1)dao层方法:

List<Son> selectUsers(SonParam sonParam);

2)xml文件语句

1、入参是对象,所以这里parameterType是该对象的引用路径

2、collection属性,这里注意了,他和该对象SonParam里面变量名保持一致

3、随便写,保持一致即可。

八、对象中的map

对象中的属性如下所示:

public class SonParam {

    private Map<String,Object> idMap;

    public Map<String, Object> getIdMap() {
        return idMap;
    }

    public void setIdMap(Map<String, Object> idMap) {
        this.idMap = idMap;
    }
}

给map中添加数据如下:

Set<Long> idList = new HashSet<>()
 idList.add(1L);
 idList.add(2L);
 idList.add(3L);
 idList.add(4L);
 idList.add(5L);
Map<String,Object> paraMap = new HashMap<>();
paraMap.put("ids",idList);
SonParam param = new SonParam();
param.setIdMap(paraMap);

1)dao层方法:

List<Son> selectUsers(SonParam sonParam);

2)xml文件语句

1、入参是对象,所以这里parameterType是该对象的引用路径

2、collection属性,这里注意了,他是通过对象中的属性idMap点map集合中的key值ids得到的,即为“idMap.ids

3、随便写,保持一致即可。

好了,以上即为foreach标签对中属性对于各种集合数据的处理。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值