1. 基本条件
- 等于 (
eq
): 检查某个字段是否等于某个值。
queryWrapper.eq("age", 20);
- 不等于 (
ne
): 检查某个字段是否不等于某个值。
queryWrapper.le("age", 20);
- 大于 (
gt
): 检查某个字段是否大于某个值。
queryWrapper.gt("age", 20);
- 大于等于 (
ge
): 检查某个字段是否大于等于某个值。
queryWrapper.ge("age", 20);
- 小于 (
lt
): 检查某个字段是否小于某个值。
queryWrapper.lt("age", 20);
- 小于等于 (
le
): 检查某个字段是否小于等于某个
queryWrapper.le("age", 20);
2. 模糊查询
- 模糊匹配 (
like
): 检查某个字段是否包含某个值。
queryWrapper.like("name", "张");
- 左模糊匹配 (
likeLeft
): 检查某个字段的开头是否包含某个值。
queryWrapper.likeLeft("name", "张");
- 右模糊匹配 (
likeRight
): 检查某个字段的结尾是否包含某个值。
queryWrapper.likeRight("name", "张");
3. 范围查询
- 在范围内 (
between
): 检查某个字段的值是否在某个范围内。
queryWrapper.between("age", 18, 30);
4. 逻辑组合
-
并且 (
and
): 组合多个条件,必须同时满足。
queryWrapper.and(wrapper -> wrapper.eq("age", 20)
.or(wrapper -> wrapper
.like("name", "张")));
-
或者 (
or
): 组合多个条件,满足其中一个即可。
queryWrapper.or(wrapper -> wrapper
.eq("age", 20)
.or(wrapper -> wrapper
.like("name", "张")));
-
不 (
not
): 反转条件。
queryWrapper.not(wrapper -> wrapper.eq("age", 20));
5. 子查询
- 子查询 (
apply
): 使用子查询条件。
queryWrapper.apply("age = (select age from user where name = '张三')");
6. 排序
- 排序 (
orderByAsc
,orderByDesc
): 对结果进行排序。
queryWrapper.orderByAsc("age"); queryWrapper.orderByDesc("name");
7. 分页
- 分页 (
page
): 进行分页查询。
Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
8. 选择特定字段
- 选择字段 (
select
): 选择特定的字段。
queryWrapper.select("name", "age");
9. 排除字段
- 排除字段 (
notSelect
): 排除特定的字段。
queryWrapper.notSelect("password");
10. 聚合函数
- 聚合函数 (
groupBy
,having
): 使用聚合函数和分组。
queryWrapper.groupBy("age").having("COUNT(*) > 1");
这些方法可以组合使用,构建出非常复杂的查询条件。例如:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", 1)
.and(wrapper -> wrapper.between("age", 18, 30)
.or(wrapper -> wrapper.like("name", "张"))); queryWrapper.orderByDesc("create_time");
在这个例子中,查询条件是:状态为1,年龄在18到30之间或名字包含“张”,并且按创建时间降序排序。