如何在MyBatisPlus中LambdaQueryWrapper用使用一个条件同时过滤多个字段?
时间: 2025-01-20 16:16:01 浏览: 103
在MyBatisPlus中,`LambdaQueryWrapper` 是一个非常方便的工具,用于构建动态查询条件。如果你需要使用一个条件同时过滤多个字段,可以使用 `or` 方法或者 `and` 方法来实现。以下是一个具体的示例:
假设我们有一个 `User` 实体类,包含 `name`、`email` 和 `phone` 字段。我们希望查询 `name`、`email` 或 `phone` 中任意一个字段包含特定关键字的记录。
```java
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.addServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService extends ServiceImpl<UserMapper, User> {
public List<User> getUsersByKeyword(String keyword) {
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.like(User::getName, keyword)
.or()
.like(User::getEmail, keyword)
.or()
.like(User::getPhone, keyword);
return this.list(queryWrapper);
}
}
```
在这个示例中,我们使用了 `or` 方法来连接多个 `like` 条件,这样只要 `name`、`email` 或 `phone` 中任意一个字段包含关键字,就会返回相应的记录。
如果你希望使用 `and` 方法来确保所有条件都满足,可以这样写:
```java
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.and(wrapper -> wrapper.like(User::getName, keyword)
.or()
.like(User::getEmail, keyword))
.and(wrapper -> wrapper.like(User::getPhone, keyword));
```
这样,只有同时满足 `name` 或 `email` 中任意一个字段包含关键字,并且 `phone` 字段也包含关键字的记录才会被返回。
阅读全文
相关推荐


















