<foreach 的使用> mybatis
时间: 2023-07-19 20:23:10 浏览: 88
在 MyBatis 中,foreach 标签可以用来遍历集合类型(如列表、数组等)中的元素,生成对应的 SQL 语句。foreach 标签的语法如下:
```xml
<foreach collection="collection" item="item" index="index"
open="open" close="close" separator="separator">
<!-- 标签体 -->
</foreach>
```
其中,各个属性的含义如下:
- collection:需要遍历的集合对象,可以是 List、Set、数组等类型。
- item:每次遍历时,集合中的元素会被赋值给该属性指定的变量名。
- index:每次遍历时,集合中当前元素的下标会被赋值给该属性指定的变量名。
- open:循环开始时插入的字符串。
- close:循环结束时插入的字符串。
- separator:每次循环结束后插入的字符串。
例如,以下代码演示了如何使用 foreach 标签在 MyBatis 中遍历一个 List 类型的参数:
```xml
<select id="getUserList" parameterType="java.util.List" resultType="com.example.User">
SELECT * FROM user
WHERE id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
```
以上代码中,getUserList 是一个查询语句,使用 parameterType 指定参数类型为 List,resultType 指定返回结果的类型为 User。在查询语句中,使用了 foreach 标签来遍历 List 类型的参数 list,生成对应的 IN 子句。
需要注意的是,在使用 foreach 标签时,需要确保集合对象不为 null,否则会抛出 NullPointerException 异常。如果集合对象可能为 null,可以使用 MyBatis 的 OGNL 表达式来进行判断,例如:
```xml
<if test="list != null and list.size() > 0">
<foreach collection="list" item="item" ...>
...
</foreach>
</if>
```
阅读全文