LambdaQueryWrapper中括号的用法
时间: 2024-03-08 12:44:09 浏览: 19
LambdaQueryWrapper是MyBatis-Plus框架中的一个查询条件构造器,用于构建SQL查询语句的条件部分。在LambdaQueryWrapper中,括号的用法主要有两个方面:
1. 分组条件:括号可以用于分组条件,将多个条件组合在一起,以实现更复杂的查询逻辑。例如,可以使用括号将多个条件组合成一个整体,并与其他条件进行逻辑运算,如AND或OR。示例代码如下:
```java
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getAge, 20)
.and(wrapper -> wrapper.eq(User::getGender, "male").or().eq(User::getGender, "female"));
```
上述代码中,括号将`eq(User::getGender, "male").or().eq(User::getGender, "female")`这两个条件组合在一起,并与前面的`eq(User::getAge, 20)`条件进行AND运算。
2. 嵌套条件:括号还可以用于嵌套条件,即在括号内部构建新的LambdaQueryWrapper对象,并在该对象中添加条件。这样可以实现更复杂的查询逻辑。示例代码如下:
```java
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getAge, 20)
.and(wrapper -> wrapper.eq(User::getGender, "male")
.or()
.nested(nestedWrapper -> nestedWrapper.eq(User::getCity, "Beijing").or().eq(User::getCity, "Shanghai")));
```
上述代码中,括号内部的`nested`方法创建了一个新的LambdaQueryWrapper对象,并在该对象中添加了`eq(User::getCity, "Beijing").or().eq(User::getCity, "Shanghai")`条件。这样可以实现在`eq(User::getGender, "male")`条件下,查询城市为北京或上海的用户。