MyBatis中foreach的使用

foreach 也就是遍历迭代。foreach元素的属性主要有 item,index,collection,open,separator,close。

分别代表:

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

index用于表示在迭代过程中,每次迭代到的位置,

open表示该语句以什么开始,

separator表示在每次进行迭代之间以什么符号作为分隔 符,

close表示以什么结束

collection属性:既然是迭代就表示传入的参数是多个,这时候传入的参数就有以下几种可能:list 、array 、map

1. 传入的参数为list的时候

对应的Dao中的Mapper文件是:

public List<User> selectByIds(List<Integer> ids);

xml文件代码片段:

<select id="selectByIds" resultType="com.wuuushao.pojo.User">

        select * from user where id in

        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">

            #{item}

        </foreach>

</select>

2. 传入的参数为Array的时候

对应的Dao中的Mapper文件是:

public List<User> selectByIds(int[] ids);

xml文件代码片段:

<select id="selectByIds" resultType="com.wuuushao.pojo.User">

        select * from user where id in

        <foreach collection="array" index="index" item="item" open="(" separator="," close=")">

            #{item}

        </foreach>

    </select>

3. 传入的参数为Map的时候

对应的Dao中的Mapper文件是:

public List<User> selectByIds(Map<String, Object> params);

xml文件代码片段:

<select id="selectByIds" resultType="com.wuuushao.pojo.User">

        select * from user where  id in

        <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">

            #{item}

        </foreach>

    </select>

map的时候需要注意的是:collection的值“ids”是存储在map中的key(比如:map.put("ids",ids));这个不是随便乱写的,尤其需要注意;

猜你喜欢

转载自blog.csdn.net/RuiKe1400360107/article/details/82425050