MyBatis 传入List集合作为条件查询数据
时间: 2024-01-14 09:02:34 浏览: 89
在 MyBatis 中,可以很方便地通过传入 List 集合作为条件来查询数据。具体实现方式如下:
假设有一个实体类 User,其中有一个属性为 name,现在需要查询 name 在某个 List 中的所有 User。可以编写下面的 SQL 语句:
```
SELECT * FROM User WHERE name IN
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
```
这里使用了 MyBatis 的 foreach 标签,将 List 中的元素一个一个地遍历,并将其作为参数传入 SQL 语句中。其中,item 属性指定了遍历过程中的变量名,collection 属性指定了要遍历的集合,open 属性指定了集合开始时的字符串,separator 属性指定了元素之间的分隔符,close 属性指定了集合结束时的字符串。
在 Java 代码中,可以这样调用:
```
List<String> nameList = new ArrayList<>();
nameList.add("Tom");
nameList.add("Jerry");
List<User> userList = sqlSession.selectList("userMapper.selectByNameList", nameList);
```
这里假设 User 对应的 Mapper 接口为 UserMapper,其中有一个名为 selectByNameList 的方法。在 XML 配置文件中编写对应的 SQL 语句,并将参数名设置为 list,如下所示:
```
<select id="selectByNameList" parameterType="java.util.List" resultType="User">
SELECT * FROM User WHERE name IN
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
```
这样,当调用 selectByNameList 方法时,传入的 List 对象就会被解析并应用到 SQL 语句中,最终返回符合条件的 User 对象列表。
阅读全文