结论
更推荐使用:LambdaQueryWrapper
QueryWrapper:灵活但是不够类型安全
LambdaQueryWrapper:安全
分析
在MyBatis-Plus中,QueryWrapper
和 LambdaQueryWrapper
都是用来构建查询条件的工具类。它们都提供了链式调用的方式来构造SQL语句中的WHERE条件部分,但是两者之间存在一些差异。
QueryWrapper
QueryWrapper
是一个基础的查询条件构造器,它允许直接使用字段名来构建查询条件。这种方式的优点是直观,容易理解;缺点是在字段名发生变更时,需要手动修改所有相关的地方,容易出现错误。
示例代码:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三");
List<User> users = userMapper.selectList(queryWrapper);
LambdaQueryWrapper
LambdaQueryWrapper
则是基于Lambda表达式的查询条件构造器,它通过方法引用来指定字段,这样可以利用Java编译器的类型检查功能,避免因为字段名更改而导致的错误。同时,这种方式也更符合Java8之后推崇的函数式编程风格。
示例代码:
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getName, "张三");
List<User> users = userMapper.selectList(lambdaQueryWrapper);
主要区别
-
类型安全:
LambdaQueryWrapper
使用方法引用,因此可以在编译时检查字段是否存在,提供更好的类型安全性。QueryWrapper
使用字符串形式的字段名,如果字段名发生变化,编译时不会报错,只能运行时发现问题。
-
易用性:
- 对于大型项目或者团队开发来说,
LambdaQueryWrapper
更加推荐,因为它可以减少因字段名变化而引起的错误。 QueryWrapper
虽然简单直接,但在维护大型应用时可能会带来额外的工作量。
- 对于大型项目或者团队开发来说,
-
性能:
- 在性能方面,两者几乎没有差异,因为最终都会转换为相同的SQL语句执行。
总的来说,如果你的应用或项目中实体类的属性较多,或者团队成员较多,建议使用 LambdaQueryWrapper
,以提高代码的健壮性和可维护性。对于小型项目或是个人项目,使用 QueryWrapper
也可以满足需求,并且编写起来可能更加直观快捷。
答疑
暂时没有什么疑惑
标签:QueryWrapper,lambdaQueryWrapper,queryWrapper,LambdaQueryWrapper,Plus,Mybatis,字段名 From: https://www.cnblogs.com/mllt/p/18475565/mybatis-plus-22041019