当前位置: 首页 > news >正文

`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 表达式来确保字段名和实体类属性的一致性。


http://www.mrgr.cn/news/17552.html

相关文章:

  • MySQL锁机制解析:确保数据库高效并发与数据一致性的关键
  • FFmpeg源码:av_rescale_rnd、av_rescale_q_rnd、av_rescale_q、av_add_stable函数分析
  • 【Hot100】LeetCode—74. 搜索二维矩阵
  • kali——nikto的使用
  • C/C++逆向:寻找mian函数(其他编译配置特征)
  • react中修改组件样式的几种方法
  • linux组合命令:删除一个目录树中所有的空目录(包括嵌套空目录)
  • Day 1 : 数据结构
  • CompletableFuture学习
  • 酿酒师的匠心独运:白酒酿造的不同工艺
  • 网络层 III(划分子网和构造超网)【★★★★★★】
  • 《C++自定义类型的流输入输出:解锁高效编程新维度》
  • 网络工程9(软路由,旁路由)
  • 【C++ Primer Plus习题】8.7
  • Linux操作系统软件管理
  • 垃圾回收机制
  • 2-83 基于matlab的自适应正则化核的模糊均值聚类框架(ARKFCM)
  • 学习记录:js算法(二十一):字符串的排列、替换后的最长重复字符
  • 如何实现图片垂直旋转90度的问题
  • HarmonyOS开发实战( Beta5版)应用滑动场景帧率问题分析最佳实践