mybatis查询传集合参数
时间: 2023-07-10 18:29:49 浏览: 171
在 MyBatis 中,查询传集合参数可以使用以下两种方式:
1. 使用 foreach 标签
使用 foreach 标签可以遍历集合参数中的每个元素,将元素的值赋给 SQL 语句中的参数。例如,我们可以使用如下的 SQL 语句查询多个用户的信息:
```
<select id="getUserList" resultType="User">
SELECT * FROM user WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
```
在上述 SQL 语句中,我们使用了 foreach 标签对集合参数 ids 进行了遍历,将遍历得到的元素 id 的值赋给了 SQL 语句中的参数 #{id}。其中,open、separator、close 属性分别指定了 SQL 语句中的括号、分隔符等。
在 Java 代码中,我们可以将集合参数 ids 以 List 或者数组的形式传递给 MyBatis:
```
List<Integer> ids = Arrays.asList(1, 2, 3);
List<User> userList = sqlSession.selectList("getUserList", ids);
```
在上述 Java 代码中,我们将 ids 以 List 的形式传递给 MyBatis,MyBatis 会自动使用 foreach 标签将集合参数中的元素传递给 SQL 语句中的参数。
2. 使用 @Param 注解
另一种方式是使用 @Param 注解指定集合参数的名称,然后在 SQL 语句中直接使用该名称。例如,我们可以使用如下的 SQL 语句查询多个用户的信息:
```
<select id="getUserList" resultType="User">
SELECT * FROM user WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
```
在 Java 代码中,我们可以使用 @Param 注解指定集合参数的名称为 ids:
```
List<Integer> ids = Arrays.asList(1, 2, 3);
List<User> userList = sqlSession.selectList("getUserList", @Param("ids") ids);
```
在上述 Java 代码中,我们使用 @Param 注解指定了集合参数的名称为 ids,然后将 ids 以 List 的形式传递给 MyBatis。MyBatis 会自动将集合参数传递给 SQL 语句中的参数,从而实现查询传集合参数的功能。
阅读全文