结论

更推荐使用: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);

主要区别

  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. iOS关于NSNotificationCenter通知使用小结

    常用的页面之间传值方式是参数,单例,通知,委托,以及其他全局变量等等.通知是一种广播形式,可以一对多通知传值.最近在项目中用的模块化开发, 通过封装抽取,将页面分为上中下三个模块.最简单的方式是把所有 ...

  2. 一个查询IP地理信息和CDN提供商的离线终端工具

    一个查询IP地理信息和CDN提供商的离线终端工具 Nali 功能 支持多种数据库 纯真 IPv4 离线数据库 ZX IPv6 离线数据库 Geoip2 城市数据库 (可选) IPIP 数据库 (可选) ...

  3. js实现控制音乐播放

    js实现控制音乐播放 用js实现控制音乐播放其实很简单,但是第一次去做可能会遇到一点点小问题. 比如说我自己,第一次想实现一个播放器效果,然后在网上搜寻半天照着自己的理解写下如下代码:  <!D ...

  4. 操作系统_MPI程序设计

    一.实验环境搭建 本次MPI集群环境是在电脑中安装mpi的sdk和应用程序后在visual studio 2022 上配置MPI环境. VC++目录--->包含目录--->添加MPI的in ...

  5. Oracle 11.2 RAC 删除节点

    软硬件环境:与上一篇文章一致: 一般对 CRS 层面数据结构做重要操作之前一定要先备份 OCR  [root@vastdata4 ~]# ocrconfig -manualbackup vastdat ...

  6. kerberos系列之spark认证配置

    大数据安全系列的其它文章 https://www.cnblogs.com/bainianminguo/p/12548076.html-----------安装kerberos https://www. ...

  7. 【Azure Bot Service】部署Python ChatBot代码到App Service中

    问题描述 使用Python编写了ChatBot,在部署到App Service,却无法启动. 通过高级工具(Kudu站点:https://<your site name>.scm.chin ...

  8. 融合虚拟与现实,AR Engine为用户提供沉浸式交互体验

    当今的应用市场中,传统的应用产品已经难以完全满足消费者的多样化需求.为了在竞争激烈的市场中脱颖而出,企业需要深入洞察用户需求,提供个性化的服务体验和差异化的产品创新,以吸引并留住消费者. 比如,购物类 ...

  9. 4G模组AT指令 | MQTT应用指南!

    今天,老师傅讲的是关于4G模组AT指令之MQTT应用,以4G模组Air780E为例: 一.MQTT 协议简介 1.1 MQTT 概述 MQTT 是一种轻量级的消息传输协议,旨在在物联网(IoT)应用中 ...

  10. 给网站免费升级https协议

    给网站免费升级HTTPS协议,可以通过申请并部署免费的SSL证书来实现.以下是一个详细的步骤指南: 一.申请免费SSL证书 选择证书颁发机构: 可以选择像JoySSL这样的公益项目,它提供免费.自动化 ...