QueryWrapper<>
时间: 2025-03-08 11:01:47 浏览: 37
### 使用 QueryWrapper 在 MyBatis Plus 中进行查询操作
在 MyBatis-Plus 中,`QueryWrapper` 是用于构建 SQL 查询条件的强大工具类。通过 `QueryWrapper` 可以方便地创建各种类型的查询语句,支持多种逻辑运算符以及字段比较方式。
#### 构建基础查询条件
对于简单的查询需求,可以直接调用相应的方法来设置查询条件:
```java
// 创建一个新的 QueryWrapper 实例
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 添加等于条件 (status=1)
queryWrapper.eq("status", 1);
```
上述代码片段展示了如何初始化一个 `QueryWrapper` 对象并为其添加相等判断的查询条件[^1]。
#### 组合复杂查询条件
当面对更复杂的业务场景时,可以通过链式编程的方式组合多个查询条件。例如,下面的例子演示了如何同时应用 AND 和 OR 关系的操作:
```java
// 设置复合查询条件
queryWrapper.eq("status", 1)
.and(wrapper -> wrapper.between("age", 18, 30).or(wrapper -> wrapper.like("name", "张")));
```
这里不仅限定了状态为激活(`status`=1),还进一步指定了年龄范围(介于18至30岁之间)或者名字中含有特定字符的情况之一满足即可[^2]。
#### 排序与分页功能
除了基本的选择外,还可以利用 `orderByAsc/Desc()` 方法指定结果集按照某个列升序或降序排列;另外配合 PageHelper 插件能够轻松实现分页效果:
```java
// 按照 create_time 字段倒序展示记录
queryWrapper.orderByDesc("create_time");
// 如果需要分页,则可以在执行 selectList() 前先配置好 page 参数
Page<User> page = new Page<>(currentPage, pageSize);
IPage<User> userPage = baseMapper.selectPage(page, queryWrapper);
```
此部分说明了怎样对返回的数据按时间戳逆向排序,并介绍了引入第三方库辅助完成分页处理的可能性。
#### 特殊查询方法介绍
针对某些特殊的需求,比如模糊查找、排除匹配项等,MyBatis-Plus 提供了一些专门设计好的 API 函数:
```java
// 不完全匹配的名字搜索(前后都允许有其他字符)
wrapper.notLike("name", "李四");
// 左侧通配符模式下的姓名检索 ("王%")
wrapper.likeLeft("name", "王");
```
这两行代码分别实现了非精确字符串对比的功能——前者表示名称里不含给定子串的所有条目都将被选中;后者则只考虑那些开头几个字母符合条件的对象集合[^3]。
综上所述,在实际开发过程中合理运用 `QueryWrapper` 类所提供的接口函数,可以使数据库交互变得更加直观高效。
阅读全文
相关推荐


















