mybatis-plus and嵌套中包含or
时间: 2023-10-13 16:22:54 浏览: 105
在 MyBatis-Plus 中,可以使用 `LambdaQueryWrapper` 来构建查询条件,同时可以使用 `nested` 方法来构建嵌套查询条件,从而实现复杂的查询条件,包括 `and` 和 `or` 的组合。
下面是一个例子,假设有一个实体类 `User`,有三个属性 `name`、`age` 和 `sex`,我们想查询名字为 "Tom" 并且年龄小于 18 岁或者性别为女的用户,可以这样写:
```java
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getName, "Tom")
.nested(wrapper -> wrapper.lt(User::getAge, 18).or().eq(User::getSex, "female"));
List<User> userList = userMapper.selectList(queryWrapper);
```
在上面的代码中,我们使用了 `nested` 方法构建了一个嵌套查询条件,其中包含了年龄小于 18 岁或者性别为女的查询条件,使用 `or` 方法连接。这个嵌套查询条件又和名字等于 "Tom" 使用 `and` 方法连接,从而实现了名字为 "Tom" 并且年龄小于 18 岁或者性别为女的查询条件。
需要注意的是,嵌套查询条件和普通查询条件一样,可以使用 `and`、`or`、`eq`、`ne`、`lt`、`le`、`gt`、`ge` 等方法来构建。`nested` 方法的作用只是将一组查询条件包裹在一个嵌套的查询条件中。
阅读全文