querywrapper和lamdaquerywrapper
MyBatis Plus QueryWrapper 和 LambdaQueryWrapper 的区别及用法
QueryWrapper 使用说明
QueryWrapper<T>
是 MyBatis-Plus 提供的一个用于构建查询条件的对象。通过 QueryWrapper
可以方便地组合各种 SQL 查询条件,支持链式调用来简化复杂的查询逻辑。
// 创建 QueryWrapper 实例并设置查询条件
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "zhangsan").gt("age", 18);
List<User> list = userMapper.selectList(wrapper);
此方式适用于实体类字段名与数据库表字段完全一致的情况[^2]。
LambdaQueryWrapper 使用说明
为了提高代码的安全性和可读性,MyBatis-Plus 还提供了 LambdaQueryWrapper<T>
类型。它利用 Java 8 的 Lambda 表达式特性来指定查询条件中的属性名称,从而避免硬编码字符串带来的风险以及 IDE 对于拼写错误无法提示的问题。
// 使用 LambdaQueryWrapper 构建更安全可靠的查询语句
LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
lambdaWrapper.eq(User::getName, "lisi").lt(User::getAge, 20);
List<User> userList = userMapper.selectList(lambdaWrapper);
这种方式不仅能够防止因字段命名不匹配而导致的运行时异常,而且使得代码更加直观易懂[^3]。
主要差异对比
| 特性 | QueryWrapper | LambdaQueryWrapper | |------|--------------------------------------------------| | 属性引用 | 需要手动输入字符串形式的列名 | 支持使用 Lambda 表达式的函数式接口引用 | | 编译期检查 | 不具备编译器级别的参数校验 | 能够享受编译期间的语法和类型安全性保障 | | 维护成本 | 字符串修改容易引发潜在 bug | 减少了由于重构引起的相关问题 |
综上所述,在实际开发过程中推荐优先选用 LambdaQueryWrapper
来编写查询条件,除非有特殊需求才考虑回退到传统的 QueryWrapper
方案[^4]。
相关推荐

















