mybatis for循环写模糊查询
时间: 2023-11-13 11:05:19 浏览: 74
在 MyBatis 中,可以使用 foreach 标签来进行循环操作,结合 like 关键字来实现模糊查询。
例如,假设有一个需求:根据多个关键词进行模糊查询,可以使用以下方式:
```xml
<!-- 定义参数 -->
<parameterMap id="paramMap" type="java.util.Map">
<parameter property="keywords" javaType="java.util.List" />
</parameterMap>
<!-- 定义 SQL -->
<select id="selectByKeywords" parameterMap="paramMap" resultType="com.example.User">
SELECT * FROM user
WHERE 1=1
<foreach collection="keywords" item="keyword" separator=" OR ">
AND name LIKE CONCAT('%', #{keyword}, '%')
</foreach>
</select>
```
其中,`keywords` 参数是一个 List 类型的集合,存储需要匹配的关键词。在 SQL 中,使用 foreach 标签进行循环遍历,将每个关键词拼接到 SQL 中进行查询。注意,使用 `separator` 属性指定多个关键词之间的分隔符。
使用方式如下:
```java
List<String> keywords = Arrays.asList("Tom", "Mary", "Jack");
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("keywords", keywords);
List<User> userList = sqlSession.selectList("selectByKeywords", paramMap);
```
以上示例中,查询名字包含 Tom、Mary 或 Jack 的用户信息。
阅读全文