mybatis foreach
时间: 2023-10-17 10:08:49 浏览: 72
MyBatis提供了一个`<foreach>`标签,该标签可以用于迭代一个集合或数组,并将其中的每个元素作为参数传递给SQL语句中的IN子句。使用`<foreach>`标签可以避免手动构建IN子句所需的重复代码。
以下是使用`<foreach>`标签的示例:
```xml
<select id="selectUsers" resultType="User">
SELECT *
FROM users
WHERE id IN
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</select>
```
在上面的示例中,我们使用`<foreach>`标签迭代一个名为`ids`的集合,并将其中的每个元素作为参数传递给SQL语句中的IN子句。`<foreach>`标签中的`item`属性指定了集合中每个元素的名称,`collection`属性指定了要迭代的集合名称,`open`属性指定了IN子句的开头,`separator`属性指定了每个元素之间的分隔符,`close`属性指定了IN子句的结尾。
使用`<foreach>`标签时,需要指定一个集合或数组作为参数。可以使用Java中的List、Set、数组等集合类型作为参数,也可以使用MyBatis提供的`<foreach>`标签中的`collection`属性中指定的OGNL表达式获取集合对象。
除了使用`<foreach>`标签迭代集合外,还可以使用`<foreach>`标签迭代一个Map。在这种情况下,`<foreach>`标签中的`item`属性将包含Map中每个元素的键,`index`属性将包含Map中每个元素的值,例如:
```xml
<select id="selectUsers" resultType="User">
SELECT *
FROM users
WHERE id IN
<foreach item="key" index="value" collection="map" open="(" separator="," close=")">
#{key}
</foreach>
</select>
```
在上面的示例中,我们使用`<foreach>`标签迭代一个名为`map`的Map,并将其中的每个键作为参数传递给SQL语句中的IN子句。`<foreach>`标签中的`item`属性指定了Map中每个元素的键,`index`属性指定了Map中每个元素的值。
阅读全文