MyBatis-Plus LambdaQueryWrapper 详解:优雅构建类型安全的查询条件
1. 引言
在 Java 开发中,MyBatis-Plus(MP)作为 MyBatis 的增强工具,提供了许多便捷的 CRUD 操作方式。其中,LambdaQueryWrapper
是一个强大的查询条件构造器,它利用 Lambda 表达式实现类型安全的查询条件拼接,避免了传统 QueryWrapper
中硬编码字段名的弊端。本文将详细介绍 LambdaQueryWrapper
的用法、优势及最佳实践。
2. LambdaQueryWrapper 是什么?
LambdaQueryWrapper
是 MyBatis-Plus 提供的一种链式查询条件构造器,它通过**方法引用(Lambda 表达式)**的方式引用实体类的属性,从而在编译期检查字段名的正确性,避免运行时因拼写错误导致的 SQL 异常。
2.1 对比 QueryWrapper
-
QueryWrapper
(字符串字段名):QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_name", "John").ge("age", 18);
- 缺点:字段名是字符串,容易拼写错误,IDE 无法智能提示,重构困难。
-
LambdaQueryWrapper
(Lambda 表达式):LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>(); lambdaWrapper.eq(User::getName, "John").ge(User::getAge, 18);
- 优点:
- 类型安全:编译期检查字段名是否正确。
- 智能提示:IDE 支持自动补全。
- 重构友好:修改实体类属性时,查询条件自动同步更新。
- 优点:
3. LambdaQueryWrapper 核心用法
3.1 创建实例
LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
// 或使用 Wrappers 工具类
L