mybatis循环模糊查询
时间: 2023-11-09 20:06:01 浏览: 37
你可以使用 MyBatis 的 foreach 标签来实现循环模糊查询。
示例代码:
```
<select id="selectByNames" resultMap="BaseResultMap">
SELECT * FROM user WHERE 1=1
<foreach collection="names" item="name" separator=" OR ">
AND name LIKE CONCAT('%', #{name}, '%')
</foreach>
</select>
```
其中,`names` 是一个 List 类型的参数,`item` 表示迭代变量名,`separator` 表示每个迭代项之间的分隔符。
在 SQL 语句中,使用 `CONCAT` 函数将 `%` 和迭代变量 `name` 拼接起来,实现模糊查询。同时,使用 `OR` 分隔符将每个迭代项连接起来,实现多条件查询。
相关问题
mybatis for循环写模糊查询
在 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 的用户信息。
new QueryWrapper 循环模糊查询
QueryWrapper是MyBatis-Plus框架提供的一个查询构造器,用于构建数据库查询条件。循环模糊查询是指在查询条件中使用循环来构建多个模糊查询条件的情况。
在使用QueryWrapper进行循环模糊查询时,可以通过以下步骤实现:
1. 创建一个QueryWrapper对象:`QueryWrapper<T> queryWrapper = new QueryWrapper<>();`,其中T为实体类的类型。
2. 使用循环遍历的方式构建多个模糊查询条件,例如:
```
for (String keyword : keywords) {
queryWrapper.like("column_name", keyword);
}
```
这里的`column_name`是数据库表中的列名,`keywords`是存储模糊查询关键字的集合。
3. 执行查询操作,例如:
```
List<T> resultList = yourMapper.selectList(queryWrapper);
```
这里的`yourMapper`是你自己定义的Mapper接口。
这样就可以实现循环模糊查询了。