mybatisplus LambdaQueryWrapper 条件如何设置符合条件添加此条过滤条件,不符合则不添加
时间: 2024-11-13 20:41:06 浏览: 62
MyBatisPlus条件构造器 -Wrapper详解.ziw
在 MyBatisPlus 中,LambdaQueryWrapper 是一个强大的动态查询工具,它提供了一种简洁的方式来设置查询条件。要根据某个条件添加或不添加过滤器,你可以使用 `lambda()` 方法和 `when/otherwise` 来实现。
例如,假设你有一个 User 实体类,你想根据 age 属性设置查询条件:
```java
User user = User.selectOne(new LambdaQueryWrapper<User>()
.lambda()
.when(age > 18, // 如果年龄大于18
() -> eq("age", age)) // 添加 age 大于18 的查询条件
.otherwise() // 否则(年龄不大于18)
.eq("age", 0) // 添加默认年龄为0的查询条件
);
```
在这个例子中,如果 age 大于 18,则会执行 `eq("age", age)`;否则(即 age 小于等于 18),会执行 `eq("age", 0)`,其他条件不会被添加。
如果你想要更复杂的逻辑,比如多个条件组合判断,也可以这样写:
```java
when(age > 18,
() -> and(eq("age", age), eq("status", "active"))) // 如果年龄大于18且状态是活跃
.otherwise(
() -> or(eq("age", 0), eq("status", "inactive"))) // 年龄小于等于18 或 状态是不活跃
```
这里 `and()` 和 `or()` 是用于组合多个条件的。
记得在使用时,确保 Lambda 表达式中的参数类型和方法签名匹配对应的方法(如 `eq`, `gt`, `lt` 等)才能正确设置查询条件。
阅读全文