MyBatisPlus的Querwapper
时间: 2025-07-08 19:48:22 浏览: 3
### MyBatis-Plus QueryWrapper 使用方法及示例
MyBatis-Plus 是一个基于 MyBatis 的增强工具,提供了丰富的简化操作功能,使开发者能够更高效地进行数据库操作[^1]。QueryWrapper 是 MyBatis-Plus 中用于构建查询条件的一个核心类,支持多种条件组合,包括 AND 和 OR 条件[^1]。
以下是一个详细的 QueryWrapper 使用方法和示例:
#### 1. 创建 QueryWrapper 对象
首先需要创建一个 QueryWrapper 对象,指定实体类型作为泛型参数:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
```
#### 2. 设置查询条件
QueryWrapper 提供了多种方法来设置查询条件,例如 `eq`、`like`、`and`、`or` 等[^3]。以下是几个常见的用法:
- **等于 (`eq`)**:设置字段等于某个值。
```java
queryWrapper.eq("username", "John");
```
表示查询 `username` 等于 `"John"` 的记录[^2]。
- **不等于 (`ne`)**:设置字段不等于某个值。
```java
queryWrapper.ne("age", 18);
```
表示查询 `age` 不等于 `18` 的记录。
- **模糊查询 (`like`)**:设置字段包含某个字符串。
```java
queryWrapper.like("name", "张三");
```
表示查询 `name` 包含 `"张三"` 的记录。
- **左模糊查询 (`likeLeft`)**:设置字段以某个字符串开头。
```java
queryWrapper.likeLeft("email", "example.com");
```
表示查询 `email` 以 `"example.com"` 结尾的记录。
- **右模糊查询 (`likeRight`)**:设置字段以某个字符串结尾。
```java
queryWrapper.likeRight("email", "example.com");
```
表示查询 `email` 以 `"example.com"` 开头的记录。
- **范围查询 (`between`)**:设置字段在某个范围内。
```java
queryWrapper.between("score", 80, 90);
```
表示查询 `score` 在 `80` 到 `90` 之间的记录。
- **空值查询 (`isNull` 和 `isNotNull`)**:设置字段是否为空。
```java
queryWrapper.isNull("address");
queryWrapper.isNotNull("phone");
```
分别表示查询 `address` 为空和 `phone` 不为空的记录。
#### 3. 组合查询条件
QueryWrapper 支持使用 `and` 和 `or` 方法组合多个查询条件[^1]。
- **AND 条件**:默认情况下,所有条件会通过 `AND` 连接。
```java
queryWrapper.eq("username", "John")
.gt("age", 20);
```
表示查询 `username` 等于 `"John"` 且 `age` 大于 `20` 的记录。
- **OR 条件**:可以通过 `or` 方法实现 OR 查询。
```java
queryWrapper.eq("username", "John")
.or(wrapper -> wrapper.eq("username", "Jane"));
```
表示查询 `username` 等于 `"John"` 或 `username` 等于 `"Jane"` 的记录。
#### 4. 执行查询
最后,使用 Mapper 接口的 `selectList` 方法执行查询:
```java
List<User> userList = userMapper.selectList(queryWrapper);
```
这将返回符合查询条件的所有记录[^2]。
---
### 示例代码
以下是一个完整的示例代码,展示如何使用 QueryWrapper 进行复杂查询:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.List;
public class UserService {
private UserMapper userMapper;
public List<User> getUserList() {
// 创建 QueryWrapper 对象
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 设置查询条件
queryWrapper.like("name", "张三") // 模糊查询 name 包含 "张三"
.ge("age", 18) // 年龄大于等于 18
.or(wrapper -> wrapper.eq("username", "admin")) // 或者 username 等于 "admin"
.orderByDesc("create_time"); // 按 create_time 倒序排序
// 执行查询
return userMapper.selectList(queryWrapper);
}
}
```
---
### 注意事项
1. QueryWrapper 的条件设置方法是链式的,可以连续调用多个方法。
2. 如果需要动态拼接条件,可以结合 Java 的条件语句(如 `if`)使用。
3. QueryWrapper 支持嵌套查询条件,可以通过 Lambda 表达式实现更复杂的逻辑。
---
阅读全文
相关推荐









