点击下方“JavaEdge”,选择“设为星标”
第一时间关注技术干货!
免责声明~
任何文章不要过度深思!
万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」;
不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人。
怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」
LambdaQueryWrapper 和 QueryWrapper 都是 MyBatis-Plus 中用于构建查询条件的封装器,它们的主要区别在于:
1 主要区别
1.1 引用方式不同
QueryWrapper 使用字符串表示字段名:
.eq("name", value)
LambdaQueryWrapper 用 Lambda 表达式引用字段:
.eq(User::getName, value)
类型安全
LambdaQueryWrapper类型安全,编译期可检查字段是否存在
QueryWrapper用字符串,易拼写错误且编译期无法检测
重构友好性
使用 LambdaQueryWrapper ,若修改实体类字段名,IDE 会提示重构所有引用
QueryWrapper 使用的字符串不会自动跟随类字段变更而更新
2 使用示例
QueryWrapper 用法:
ounter(lineounter(lineounter(lineounter(lineQueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.eq("name", "张三") .gt("age", 18) .like("email", "test");
LambdaQueryWrapper 用法:
ounter(lineounter(lineounter(lineounter(lineLambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.eq(User::getName, "张三") .gt(User::getAge, 18) .like(User::getEmail, "test");
3 建议
推荐使用 LambdaQueryWrapper,因为它类型安全,减少拼写错误引起的问题
在重构时,LambdaQueryWrapper 更有优势,字段变更会自动关联到引用处
如果需要使用动态列名或数据库原生语法,则 QueryWrapper 更灵活
本文已收录在Github Java-Interview-Tutorial,关注我,紧跟本系列专栏文章,咱们下篇再续!
🚀 魔都架构师 | 全网30W技术追随者
🔧 大厂分布式系统/数据中台实战专家
🏆 主导交易系统亿级流量调优 & 车联网平台架构
🧠 AIGC应用开发先行者 | 区块链落地实践者
🌍 以技术驱动创新,我们的征途是改变世界!
👉 实战干货:编程严选网
关注我,紧跟本系列专栏文章,咱们下篇再续!
加我好友,一起AI探索交流:
写在最后
编程严选网:
http://www.javaedge.cn/
专注分享AI时代下软件开发全场景最新最佳实践,点击文末【阅读原文】即可直达~