QueryWrapper.lambda
时间: 2025-05-21 10:37:08 浏览: 13
### QueryWrapper 的 Lambda 表达式功能
`QueryWrapper` 提供了一个 `lambda()` 方法,可以通过该方法返回一个 `LambdaQueryWrapper` 对象[^2]。这使得开发者能够在不显式创建 `LambdaQueryWrapper` 实例的情况下,利用其类型安全的特性来构建查询条件。
以下是使用 `QueryWrapper.lambda()` 构建复杂查询条件的一个具体示例:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.Arrays;
public class Example {
public static void main(String[] args) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 调用 lambda() 方法进入 LambdaQueryWrapper 模式
queryWrapper.lambda()
.eq(User::getName, "Tom") // 类型安全地比较 name 字段等于 "Tom"
.likeRight(User::getEmail, "@gmail.com") // email 字段以 "@gmail.com" 结尾
.and(wrapper -> wrapper // 组合多个条件
.ge(User::getAge, 18) // 年龄大于等于 18 岁
.lt(User::getAge, 30)); // 并且年龄小于 30 岁
// 执行查询操作
List<User> resultList = userMapper.selectList(queryWrapper);
resultList.forEach(System.out::println);
}
}
```
#### 解析
- **`queryWrapper.lambda()`**: 进入 `LambdaQueryWrapper` 模式,允许使用实体类字段作为参数,从而实现类型安全性。
- **`.eq(User::getName, "Tom")`**: 利用 Java 的方法引用机制自动绑定 `name` 属性到数据库表中的对应列。
- **`.likeRight(User::getEmail, "@gmail.com")`**: 将 `email` 字段与模式匹配,右侧模糊匹配。
- **`.and(wrapper -> ...)`**: 支持嵌套逻辑条件,增强查询灵活性。
这种写法不仅提高了代码可读性,还减少了因硬编码字符串而导致错误的可能性。
---
### 注意事项
尽管 `QueryWrapper.lambda()` 提供了类似 `LambdaQueryWrapper` 的功能,但它本质上仍然是基于 `QueryWrapper` 的扩展[^2]。因此,在某些场景下可能无法完全替代独立使用的 `LambdaQueryWrapper`。
如果需要频繁使用 Lambda 表达式的查询方式,建议直接实例化 `LambdaQueryWrapper` 来简化开发流程[^1]。
---
阅读全文
相关推荐

















