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)); 你需要特别注意这一点;
详情请参阅相关链接:链接