结论

更推荐使用:LambdaQueryWrapper


QueryWrapper:灵活但是不够类型安全

LambdaQueryWrapper:安全

分析

在MyBatis-Plus中,QueryWrapperLambdaQueryWrapper 都是用来构建查询条件的工具类。它们都提供了链式调用的方式来构造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);

主要区别

  1. 类型安全

    • LambdaQueryWrapper 使用方法引用,因此可以在编译时检查字段是否存在,提供更好的类型安全性。
    • QueryWrapper 使用字符串形式的字段名,如果字段名发生变化,编译时不会报错,只能运行时发现问题。
  2. 易用性

    • 对于大型项目或者团队开发来说,LambdaQueryWrapper 更加推荐,因为它可以减少因字段名变化而引起的错误。
    • QueryWrapper 虽然简单直接,但在维护大型应用时可能会带来额外的工作量。
  3. 性能

    • 在性能方面,两者几乎没有差异,因为最终都会转换为相同的SQL语句执行。

总的来说,如果你的应用或项目中实体类的属性较多,或者团队成员较多,建议使用 LambdaQueryWrapper,以提高代码的健壮性和可维护性。对于小型项目或是个人项目,使用 QueryWrapper 也可以满足需求,并且编写起来可能更加直观快捷。

答疑

暂时没有什么疑惑

[Mybatis Plus]lambdaQueryWrapper和QueryWrapper的选择的更多相关文章

  1. MyBatis:条件构造器QueryWrapper方法详解

    QueryWrapper 说明:      继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 n ...

  2. 基于SpringBoot+Mybatis plus+React.js实现条件选择切换搜索功能

    笔记/朱季谦 在写React前端逻辑时,经常遇到可以切换不同条件的列表查询功能,例如下边截图这样的,其实,这块代码基本都一个逻辑,可以一次性将实现过程记录下来,待以后再遇到时,直接根据笔记复用即可. ...

  3. MyBatis 及 MyBatis Plus 纯注解方式配置(Spring Boot + Postgresql)

    说明 当前的版本为 MyBatis 3.5.9 MyBatis Plus 3.5.1 Spring Boot 2.6.4 Postgresql 42.3.3 与 Spring Boot 结合使用 My ...

  4. Mybatis Plus根据某字段特定值排序

    需求 背景:一个审核流程.审核人等级分为市级和省级,管理员升级字段adminlevel,字段含义:1省级,2市级.审核字段audit为int字段,字段含义:1待市级审核,2待省级审核,3通过审核. 需 ...

  5. 【Mybatis Plus】

    引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...

  6. 【转】mybatis实战教程(mybatis in action),mybatis入门到精通

    MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis ...

  7. 深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置

    上篇文章<深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)>简单看了一下TypeHandler, 本次将结束对于mybatis的配置文件的学习 ...

  8. mybatis实战教程(mybatis in action)之一:开发环境搭建

    mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载. 首先建立一 ...

  9. mybatis实战教程(mybatis in action),mybatis入门到精通

    转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过hibernate了那这个就非常的简单) (再加 ...

  10. MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射

    先说下问题产生的背景: 最近在做一个用到MyBatis的项目,其中有个业务涉及到关联查询,我是将两个查询分开来写的,即嵌套查询,个人感觉这样更方便重用: 关联的查询使用到了动态sql,在执行查询时就出 ...

随机推荐

  1. 诸葛测字在线测算免费api接口_json格式数据返回

    ‌诸葛测字是一种古老的占卜术,相传是由三国时代的诸葛亮所创.‌ 诸葛测字通过选取三个汉字,计算其笔画数,然后根据这些数字对照特定的歌诀或表格来预测吉凶.解答疑惑.这种方法强调心诚手净,焚香祷告,通过三 ...

  2. Android Qcom USB Driver学习(九)

    本章主要是基于之前的学习,实现一个hidraw的驱动,发现有两种用于识别usb设备的方式,放别是usb_device_id和hid_device_id hid_probe (1)hid_device_ ...

  3. 2022年 GOPS 全球运维大会(上海站)资料分享

    2022年 GOPS 全球运维大会(上海站)主题为"XOps 风向标",共分为16个专场,主要侧重方向是运维.DevOps.AIOps.DevSecOps.云原生.研发效能.可观测 ...

  4. 深入解析Spring AI框架:在Java应用中实现智能化交互的关键

    今天我们的Spring AI源码分析主题即将结束.我已经对自己感兴趣的基本内容进行了全面的审视,并将这些分析分享给大家.如果你对这个主题感兴趣,可以阅读以下几篇文章.每篇文章都层层递进,深入探讨相关内 ...

  5. prometheus+grafana配置流程

    prometheus+grafana配置流程 首先,安装对应的exporter 查看prometheus支持的所有exporters https://prometheus.io/docs/instru ...

  6. 阿里云服务器安装mysql镜像

    新创建的服务器首先需要创建安全组,开放端口然后重启服务器 登陆远程服务器,具体操作步骤如下 #拉取镜像 docker pull mysql:5.7 #查看镜像是否拉取到 docker images # ...

  7. Kubernetes 新型容器逃逸漏洞预警

    作者:米开朗基杨,KubeSphere 布道师,云原生重度感染者 2022 年 1 月 18 日,Linux 维护人员和供应商在 Linux 内核(5.1-rc1+)文件系统上下文功能的 legacy ...

  8. T3 出行云原生容器化平台实践

    公司简介 T3 出行是南京领行科技股份有限公司打造的智慧出行生态平台,由中国第一汽车集团有限公司.东风汽车集团有限公司.重庆长安汽车股份有限公司发起,联合腾讯.阿里巴巴等互联网企业共同投资打造.公司以 ...

  9. Rigid Body Simulation

    目录 0 前言 1 核心技术 1.1 Semi-implicit Euler 1.2 刚体模拟 1.3 Collision 2 实现 X Ref 0 前言 声明:此篇博客仅用于个人学习记录之用,并非是 ...

  10. css动画效果(边框流光闪烁阴影效果)

    1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa7odDQYuaatklJUMc5anU10PWLAt14rNnNUD6oHJG9U63fc0y ...