QueryWrapper or后面又接or
时间: 2023-10-18 18:30:10 浏览: 35
在 `QueryWrapper` 中,`or()` 方法返回的是一个新的 `QueryWrapper` 对象,因此可以在 `or()` 方法后面继续链式调用其他方法,包括再次调用 `or()` 方法。这种方式可以实现多个条件之间的逻辑或运算。例如,下面的代码查询满足用户名为 "Tom" 或 "Jerry",且年龄大于 18 岁或小于 10 岁的用户列表:
```
QueryWrapper<User> wrapper = new QueryWrapper<User>()
.eq("name", "Tom")
.or()
.eq("name", "Jerry")
.or()
.gt("age", 18)
.or()
.lt("age", 10);
List<User> userList = userMapper.selectList(wrapper);
```
这里调用了三次 `or()` 方法,将四个条件通过逻辑或运算组合起来。具体的查询语句为:
```
SELECT * FROM user WHERE (name = 'Tom' OR name = 'Jerry' OR age > 18 OR age < 10)
```
注意,多个条件之间的逻辑运算顺序是从左到右,因此这里优先使用了 `or()` 方法。
相关问题
QueryWrapper or查询
QueryWrapper的or查询是通过在QueryWrapper对象中使用or()方法来实现的。例如,可以在QueryWrapper对象中使用eq()方法和or()方法来构建一个or查询条件。在构建or查询条件时,需要将每个条件用括号括起来,以确保查询逻辑正确。
例如,使用QueryWrapper对象进行or查询的示例代码如下:
```java
QueryWrapper<MyEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("a.del_flag", 0)
.and(wrapper -> {
wrapper.eq("a.customer_referee", UserUtils.getCurrentUserDTO().getId())
.or()
.eq("referee.referee_id", UserUtils.getCurrentUserDTO().getId());
});
```
在上述示例中,or()方法用于在QueryWrapper对象中添加or查询条件。注意,在添加or查询条件时,使用and()方法将每个条件包裹在括号内,以确保or查询逻辑的正确性。
生成的SQL脚本如下:
```
WHERE (a.del_flag = ? AND (a.customer_referee = ? OR referee.referee_id = ?))
```
这样,通过使用QueryWrapper对象的eq()方法和or()方法,可以构建出带有or查询条件的SQL脚本。
QueryWrapper or用法
QueryWrapper是MyBatis-Plus框架提供的一个查询条件构造器,用于构建数据库查询条件。它可以方便地进行复杂的查询操作,支持链式调用和灵活的条件组合。
使用QueryWrapper可以通过以下几种方式构建查询条件:
1. 等值条件:eq(column, value),表示column等于value。
2. 不等值条件:ne(column, value),表示column不等于value。
3. 大于条件:gt(column, value),表示column大于value。
4. 小于条件:lt(column, value),表示column小于value。
5. 大于等于条件:ge(column, value),表示column大于等于value。
6. 小于等于条件:le(column, value),表示column小于等于value。
7. 模糊查询条件:like(column, value),表示column包含value。
8. 排序条件:orderByAsc(column1, column2, ...),表示按照指定的列升序排序;orderByDesc(column1, column2, ...),表示按照指定的列降序排序。
除了上述基本的查询条件,QueryWrapper还支持更复杂的条件组合,例如:
1. and:and(condition1, condition2, ...),表示多个条件之间使用and关系组合。
2. or:or(condition1, condition2, ...),表示多个条件之间使用or关系组合。
3. 嵌套条件:nested(condition),表示将条件进行嵌套。
使用示例:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三")
.ne("age", 20)
.like("address", "北京")
.orderByAsc("id");
List<User> userList = userMapper.selectList(queryWrapper);
```