MyBatis 使用注解传入List集合作为条件查询数据,注解应该怎么写
时间: 2024-05-16 14:15:34 浏览: 16
MyBatis 中可以使用 `@Param` 注解来为方法参数命名,这样在 SQL 语句中就可以使用相应的命名参数了。对于 List 集合作为条件查询数据,可以使用 `foreach` 标签来遍历集合中的元素,生成对应的 SQL 语句。
具体实现步骤如下:
1.在 Mapper 接口中定义方法,方法的参数为 List 集合和其他条件参数。
```java
public interface UserMapper {
List<User> selectByList(@Param("idList") List<Integer> idList, @Param("username") String username);
}
```
2.在方法上使用 `@Select` 注解,编写 SQL 语句,并使用 `foreach` 标签遍历 List 集合。
```java
@Select("SELECT * FROM user WHERE id IN " +
"<foreach collection='idList' item='id' open='(' separator=',' close=')'>" +
"#{id}" +
"</foreach>" +
"AND username = #{username}")
List<User> selectByList(@Param("idList") List<Integer> idList, @Param("username") String username);
```
上述代码中,使用了 `<foreach>` 标签来遍历 `idList` 集合,生成对应的 SQL 语句。`item` 属性指定了集合中的元素名称,`open` 属性指定了 SQL 语句的起始字符,`separator` 属性指定了元素之间的分隔符,`close` 属性指定了 SQL 语句的结束字符。
3.在方法的参数前使用 `@Param` 注解,为 List 集合命名。
```java
List<User> userList = userMapper.selectByList(Arrays.asList(1, 2, 3), "test");
```
注:以上代码中使用了 Java 8 中的 Arrays.asList() 方法将数组转换为 List 集合。