首页 > 其他分享 >[Mybatis Plus]lambdaQueryWrapper和QueryWrapper的选择

[Mybatis Plus]lambdaQueryWrapper和QueryWrapper的选择

时间:2024-10-19 10:31:43浏览次数:6  
标签:QueryWrapper lambdaQueryWrapper queryWrapper LambdaQueryWrapper Plus Mybatis 字段名

结论

更推荐使用: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 也可以满足需求,并且编写起来可能更加直观快捷。

答疑

暂时没有什么疑惑

标签:QueryWrapper,lambdaQueryWrapper,queryWrapper,LambdaQueryWrapper,Plus,Mybatis,字段名
From: https://www.cnblogs.com/mllt/p/18475565/mybatis-plus-22041019

相关文章

  • MyBatisPlus
    一,MybatisPlus基础1.1要使用mybatisPlus需要的两个步骤;1.引入MybatisPlus的依赖点击查看代码<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></depe......
  • MyBatis入门及sql语句实战
    目录概述环境的配置MyBatis操作步骤总结创建UserMapper.java映射器接口创建UserMapper.xml映射文件在mybatis-config.xml环境配置文件中添加UserMapper.xml映射文件路径在MyBatisDemo中编写MyBatis测试代码MyBatis环境搭建MyBatis查询操作CURD操作参数传递方式Mapper映射......
  • 三、MyBatis实践:提高持久层数据处理效率(1)(包含mybatis下载官网)
    一、Mybatis简介1.1简介https://mybatis.org/mybatis-3/zh/index.htmlMyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftwareFoundation迁移到了GoogleCode。随着开发团队转投GoogleCode旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移......
  • 解决mybatis用Map返回的字段全变大写的问题
    mybatis通常情况都是用javabean作为resultType的对象,但是有时也可以使用Map去接收。${value}如果使用Map,返回来的字段名全是大写,处理方法Selectnameas“name”fromv_zhyl_zxzf_hqyzflb加上字段别名加上双引号就可以了补充知识:Mybatis查询返回类型为Map空值字段不显示项目使......
  • MyBatis在SQL语句中取list的大小
    需求:使用MyBatis进行开发时,在一个SQL语句中需要拼接list的大小。大家都知道,当我们在MyBatis中写SQL时,如果需要遍历list,先对list进行非空判断的时候,可以加下面这行:<iftest="null!=listandlist.size!=0">SQL</if>但是如果想在SQL中取到list.size的值,则比较麻烦。一般会想......
  • MyBatis SQL映射文件
    目录SQL映射的XML文件mapper元素selectparameterTyperesultMapinsert元素update元素delete元素resultMap缓存SQL映射的XML文件MyBatis真正的强大在于映射语句,专注于SQL,功能强大,SQL映射的配置却是相当简单SQL映射文件的几个顶级元素(按照定义的顺序)mapper–......
  • 【图书介绍】《Spring+Spring MVC+MyBatis从零开始学(视频教学版)(第3版)》
    本书重点基于版本Spring 6.1.10、Spring MVC 6.1.10、MyBatis 3.5.16。详解SSM框架各组件用法及其整合方法,实战新闻发布管理系统、图书管理系统开发。配套示例源码、PPT课件、教学大纲、习题答案、教学视频。内容简介本书全面讲解使用流行轻量级框架SSM(Spring+Spring......
  • MyBatis 动态 SQL 详解
    1.什么是动态SQL?在使用MyBatis进行数据库查询时,可能会遇到一些需要根据条件动态生成SQL语句的情况。MyBatis提供了强大的动态SQL支持,通过标签和条件语句,可以让SQL语句根据不同的输入参数动态生成。这大大提高了代码的灵活性,避免了拼接SQL语句的繁琐和出错风险。......
  • [MyBatis-Plus]核心功能详解
    条件构造器MyBatisPlus支持各种复杂的where条件,可以满足日常开发的所有需求Wrapper条件构造器专门用于构造复杂的查询条件BaseMapper提供很多增删改查的方法,其中的Wrapper就是用于构建复杂查询条件的Wrapper的继承体系Wrapper是最顶级的父类AbstractWrapper继......
  • MyBatis基本使用(数据输出)
    导言    上期讲了一部分关于mybatis的基本使用知识点,本期继续整理mybatis基本使用知识点(数据输出)上期内容:MyBatis基本使用(上)_mybatis的配置文件使用**settings标签**设置-CSDN博客输出概述数据输出总体上有两种形式:-增删改操作返回的受影响行数:直接使用int或lo......