mybatis-plusand和or优先级
时间: 2023-11-17 07:19:35 浏览: 234
MyBatis-Plus 中的 AND 和 OR 的优先级是根据它们在查询语句中的位置来决定的。一般来说,AND 的优先级高于 OR。这意味着在查询语句中,AND 运算符会先于 OR 运算符进行计算。
例如,考虑下面这个示例查询语句:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 20).and(qw -> qw.eq("gender", "male").or().eq("gender", "female"));
```
在上面的示例中,AND 运算符 `eq("age", 20).and(...)` 在嵌套的 OR 运算符之前执行。因此,查询中先筛选出 age = 20 的结果,然后再对 gender 字段进行 OR 条件的筛选。
如果你希望修改运算符的优先级,可以使用括号来明确指定运算顺序。例如:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 20).and(qw -> qw.eq("gender", "male").or().eq("gender", "female")).or().ge("salary", 5000);
```
在上面的示例中,我们使用了括号来明确指定先执行的条件。首先执行括号内的 AND 条件,并与后面的 OR 运算符进行计算,最后与 ge("salary", 5000) 的条件进行 OR 运算。
总结起来,AND 运算符在查询语句中的优先级高于 OR 运算符,但我们可以使用括号来明确指定运算的顺序。
阅读全文