mybaits 传列表参数
时间: 2023-05-03 08:07:45 浏览: 133
MyBatis 是一个流行的 Java 持久化框架,它可以让开发者更加方便地进行数据库操作。当我们需要把一个列表(array,list)作为参数传递给 MyBatis 时,可以采用以下的两种方式:
第一种方式是使用 `foreach` 元素进行循环,将列表中的元素依次设置到对应的参数中,如下所示:
```
<select id="selectByIds" resultType="User">
select * from user where id in
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
</select>
```
其中,`selectByIds` 是 SQL 语句的 ID,`User` 是返回结果类型。`<foreach>` 元素中,item 表示要遍历的变量,collection 表示要遍历的集合,open、separator、close 分别表示循环开始符、分隔符和结束符。
第二种方式是使用 `Provider` 接口的实现类,把列表转换成字符串类型的传参,代码如下:
```
public class UserSqlProvider {
public static String selectByIds(Map<String, Object> map) {
List<Integer> ids = (List<Integer>) map.get("list");
StringBuilder builder = new StringBuilder();
builder.append("(");
for (int i = 0; i < ids.size(); i++) {
builder.append(ids.get(i));
if (i < ids.size() - 1) {
builder.append(",");
}
}
builder.append(")");
return builder.toString();
}
}
```
在 `Mapper` 中这样写:
```
@Select("select * from user where id in #{ids}")
List<User> selectByIds(@Param("ids") List<Integer> ids);
```
以上是两种比较常用的传递列表参数的方式,开发者可以根据实际需要来选择适合自己的方式。
阅读全文