MyBatis foreach标签有什么作用呢?

Java-框架王 MyBatis 发布时间:2021-07-20 22:44:31 阅读数:21087 1
下文讲述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表的内容如下:
id name notes
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=莉莉]
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/MyBatis/202107/551.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者