sql中foreach的使用

 2024-03-10 03:02:57  阅读 0

sql中的角色

即遍历迭代,一般用在SQL中in关键字之后

元素的属性主要有item、index、open、close。

代表:

使用时最关键也是最容易出错的就是属性。 这个属性是必须指定的,但是在不同的情况下,这个属性的值是不同的。 主要有以下三种情况:

1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可

item表示迭代时集合中每个元素的别名,

Index用于表示迭代过程中每次迭代到达的位置。

open 表示语句以什么开头,

指示使用什么符号作为每次迭代之间的分隔符,

结束是什么意思?

将其封装到地图中。 其实如果你传入一个参数,它就会被封装到一个Map里面。 Map的key就是参数名,所以此时的属性值就是封装的Map中自己的Key中传入的List或者数组对象,我们看一下上述三种情况的示例代码:

代码段:


1.当传入的参数是列表时

Dao中对应的文件为:

列表(列表 ID);

xml文件代码片段:

该sql的意思是根据动态id进行查询,以'('开始,以')'结束,并以','分隔。 如果#{item}没有写具体值,那么它是一个动态参数;

<select id="selectByIds" resultType="com.txw.pojo.User">
        select * from user where id in
        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
</select>

2.当传入的参数为Array时

Dao中对应的文件为:

列表(int[] id);

xml文件代码片段:

<select id="selectByIds" resultType="com.txw.pojo.User">
        select * from user where id in
        <foreach collection="array" index="index" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

3.当传入的参数为Map时

Dao中对应的文件为:

列表(地图);

xml文件代码片段:

<select id="selectByIds" resultType="com.txw.pojo.User">
        select * from user where  id in
        <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

映射时需要注意的是:值“ids”是存储在map中的键(例如:map.put(“ids”,ids)); 你需要特别注意这一点;

详情请参阅相关链接:链接

标签: 传入 迭代 片段

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码