MyBatis foreach标签有什么作用呢?

转自:

MyBatis foreach标签有什么作用呢?

下文讲述MyBatis中foreach标签的相关功能

MyBatis foreach标签的功能

用于实现sql 语句中的in 条件中的内容
Mybatis中foreach标签可以很好的支持List、set接口的集合

foreach语句如下所示:

<foreach item="item" index="index" collection="list|array|map key" open="(" separator="," close=")">
    参数值
</foreach>

foreach标签中常用的属性值说明:

属性值功能
item设置集合中每一个元素进行迭代时的别名
index指定一个名字,表示在迭代过程中每次迭代到的位置
open设置该语句以什么开始(既然是 in 条件语句,所以必然以(开始)
separator设置在每次进行迭代之间以什么符号作为分隔符(既然是 in 条件语句,所以必然以,作为分隔符)
close设置该语句以什么结束(既然是 in 条件语句,所以必然以)开始)
foreach标签注意事项:
       使用foreach标签时,大家一定要注意collection属性,
       此属性必须输入,此属性值可放入以下三种类型
一、传入的是单参数且参数类型是一个 List,collection 属性值为 list。
二、传入的是单参数且参数类型是一个 array 数组,collection 的属性值为 array。
三、传入的参数是多个,需要把它们封装成一个 Map,当然单参数也可以封装成 Map。
    Map 的 key 是参数名,collection 属性值是传入的 List 或 array 对象在自己封装的 Map 中的 key

例 下文将基于 User表,进行相应的查询操作 user表的内容如下:

idnamenotes
1王二哈哈
2张三喜喜
3里斯莉莉

UserMapper.xml

<select id="selectUserInfo"
    parameterType="com.java265.po.UserInfo"
    resultType="com.java265.po.UserInfo">
    SELECT id,name,notes
    FROM userInfo WHERE id in
    <foreach item="id" index="index" collection="list" open="("
        separator="," close=")">
        #{id}
    </foreach>
</select>

UserInfoMapper 类

public List<UserInfo> selectUserInfo(List<Integer> idList);

测试代码

public class Test {
    public static void main(String[] args) throws IOException {
        // 读取配置文件mybatis-config.xml
        InputStream config = Resources.getResourceAsStream("mybatis-config.xml"); // 根据配置文件构建
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
        // 通过SqlSessionFactory创建SqlSession
        SqlSession ss = ssf.openSession();
        List<Integer> idList = new ArrayList<Integer>();
        idList.add(1);
        idList.add(3);
        List<UserInfo> userList = ss.selectList("com.java265.mapper.UserInfoMapper.selectUserInfo", idList);
        for (UserInfo t : userList) {
            System.out.println(t);
        }
    }
}

输出结果---
DEBUG [main] - ==> Preparing: SELECT id,name,notes FROM userInfo WHERE id in ( ? , ? )
DEBUG [main] - ==> Parameters: 10(Integer), 12(Integer)
DEBUG [main] - <== Total: 2
UserInfo[id=1,name=王二,notes=哈哈]
UserInfo[id=3,name=里斯,notes=莉莉]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值