`lambdaQuery()` 和 `lambda()`

在Java中,lambdaQuery()lambda() 是与 Lambda 表达式相关的查询方法,通常用于 MyBatis Plus 框架中。下面通过举例来解释它们的用法和区别。

1. lambdaQuery()

lambdaQuery() 是 MyBatis Plus 框架中常用的方法,用于创建基于 Lambda 表达式的查询构造器。它的主要作用是帮助我们通过 Lambda 表达式来构建查询条件,避免了硬编码字段名称带来的风险。

示例代码:

// 假设我们有一个 User 实体类
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;

    // Getters and setters...
}

// 使用 lambdaQuery() 构建查询
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getAge, 18) // 查询年龄为18的用户
            .like(User::getName, "John"); // 查询名字中包含“John”的用户

List<User> users = userMapper.selectList(queryWrapper);

解释:

  • LambdaQueryWrapper<User> 是一个查询构造器,用于构建查询条件。
  • eq(User::getAge, 18) 表示查询 age 等于 18 的用户。
  • like(User::getName, "John") 表示查询 name 中包含 “John” 的用户。

2. lambda()

lambda() 方法一般用于 MyBatis Plus 中的 QueryWrapper,它将查询条件转化为 Lambda 表达式版本。相对于 lambdaQuery() 直接返回一个 LambdaQueryWrapperlambda() 是在已有 QueryWrapper 的基础上转化为 LambdaQueryWrapper

示例代码:

// 假设我们仍然有一个 User 实体类

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda() // 转换为 Lambda 表达式查询
            .eq(User::getAge, 18) // 查询年龄为18的用户
            .like(User::getName, "John"); // 查询名字中包含“John”的用户

List<User> users = userMapper.selectList(queryWrapper);

解释:

  • queryWrapper.lambda()QueryWrapper 转换为 LambdaQueryWrapper,以便使用 Lambda 表达式构建查询条件。
  • eq(User::getAge, 18)like(User::getName, "John")lambdaQuery() 中的用法一致。

区别总结

  • lambdaQuery() 直接创建一个新的 LambdaQueryWrapper 对象,适合在代码中直接使用。
  • lambda() 是在已有的 QueryWrapper 对象上调用的,将其转换为 LambdaQueryWrapper 以支持 Lambda 表达式构建查询。

这两个方法都是为了减少硬编码字段名称带来的维护问题,利用 Lambda 表达式来确保字段名和实体类属性的一致性。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值