【Java】Mybatis Plus LambdaQueryWrapper梳理

这篇具有很好参考价值的文章主要介绍了【Java】Mybatis Plus LambdaQueryWrapper梳理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Java】Mybatis-Plus LambdaQueryWrapper梳理

前言

为了更方便的实现动态 SQL,Mybatis Plus 在其基础上扩展了 LambdaQueryWrapper,LambdaQueryWrapper 提供了更加简便的查询语法,同时也避免了 SQL 注入的风险。

LambdaQueryWrapper 实现了 QueryWrapper 的全部功能,并提供了基于 Lambda 表达式的查询方式,使得查询语法更加优雅。使用 LambdaQueryWrapper,可以方便的实现各种查询条件的拼接,如 whereandorinlikebetween 等条件。

LambdaQueryWrapper 通过函数式编程的方式,提供了多种方法用于实现各种查询条件的拼接,这些方法包括 eq、ne、gt、ge、lt、le、in、notIn、like、notLike、between、notBetween、isNull、isNotNull 等。

与QueryWrapper对比

LambdaQueryWrapper 和 QueryWrapper 都是 Mybatis Plus 中的查询条件封装类,其中 LambdaQueryWrapper 是基于 Lambda 表达式的实现,而 QueryWrapper 是基于字符串的实现。它们的优缺点如下:

LambdaQueryWrapper 优点

  1. 代码简洁,易读易写,使用 Lambda 表达式可避免手写字符串繁琐容易出错
  2. 类型安全,LambdaQueryWrapper 在编译期间就能够捕获类型错误避免运行时出现类型错误
  3. 更加灵活,LambdaQueryWrapper 支持链式调用,支持多个条件之间的 and 和 or 关系组合,支持子查询等复杂查询操作。

LambdaQueryWrapper 缺点

  1. LambdaQueryWrapper 基于 Lambda 表达式实现,可能存在一些性能问题,在大数据量查询时可能会影响查询性能。

QueryWrapper 优点

  1. 在少量数据查询时,QueryWrapper 通常比 LambdaQueryWrapper 更快,因为它不需要解析 Lambda 表达式
  2. QueryWrapper 更加灵活,可以使用字符串直接拼接 SQL,支持 SQL 函数等更多高级查询操作
  3. 对于老旧代码,QueryWrapper 更加适合兼容扩展

QueryWrapper 缺点

  1. 代码可读性和可维护性较差,手写 SQL 字符串容易出错,并且不易于维护修改
  2. 使用字符串拼接 SQL,容易受到 SQL 注入攻击需要特别注意防范
  3. 编译期不能捕获类型错误,需要在运行时才能发现类型错误。

综上推荐使用 LambdaQueryWrapper(此外,LambdaQueryWrapper 还具有良好的兼容性和扩展性,可以轻松适应不同的业务需求,提高开发效率和代码质量)。

案例

简单查询

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getUsername, "张三")
        .and(w -> w.between(User::getAge, 18, 30)
                .or().eq(User::getGender, 1))
        .orderByDesc(User::getCreateTime);

List<User> userList = userMapper.selectList(wrapper);

首先创建了一个 LambdaQueryWrapper 对象,然后通过 eq 方法添加一个等于条件,表示查询用户名为“张三”的用户。接着,使用 and 方法添加一个条件组,该组包含了一个 between 条件和一个 or 条件,分别表示查询年龄在 18 到 30 之间的用户,或者查询性别为 1 的用户。注意,条件组中的多个条件之间默认是 and 的关系,可以通过 or 方法切换为 or 的关系。最后,使用 orderByDesc 方法对查询结果进行排序,按照创建时间倒序排列。

使用 LambdaQueryWrapper 进行查询时,还可以通过 select 方法来自定义查询字段,从而实现对查询结果的灵活控制。

select

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 20)
        .select(User::getId, User::getUserName, User::getAge);

List<User> userList = userMapper.selectList(wrapper);

首先通过 LambdaQueryWrapper 对象创建了一个查询条件,然后使用 eq 方法添加了一个等于条件,表示查询年龄为 20 的用户。接着,通过 select 方法来自定义查询字段,只查询 id、username、age 三个字段,这些字段是以逗号分隔的字符串形式传入的。最后,调用 selectList 方法执行查询操作,得到查询结果。文章来源地址https://www.toymoban.com/news/detail-701670.html

到了这里,关于【Java】Mybatis Plus LambdaQueryWrapper梳理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis Plus中使用LambdaQueryWrapper进行分页以及模糊查询对比传统XML方式进行分页

    传统的XML方式只能使用limit以及offset进行分页,通过判断name和bindState是否为空,不为空则拼接条件。 只需要在Service实现类中直接调用Mybatis Plus的方法即可进行操作。 return PageSanitationCompanyStaff类型可以得到数据的总数,你也可以通过.getRecords()方式获取List集合 这样子,我们就

    2024年02月12日
    浏览(58)
  • Java - LambdaQueryWrapper 的常用方法

    1、查看项目中是否导入mybatisPlus的jar包 2、servie 层和实现类要集成mybatisPlus service 继承IService 实现类中要继承IService的实现类ServiceImplmapper,实体类 3、如果想要mapper中的一些方法,mapper 要继承BaseMapper实体类 4、在实现类中实现方法,不需要在xml中写一个方法了,常用的方法 总

    2024年02月03日
    浏览(72)
  • Java8中LambdaQueryWrapper对象使用(学习笔记)

    eq: ​ 说明:等于= ​ 例: ne: ​ 说明:不等于 ​ 例: gt: ​ 说明:大于 ​ 例: ge: ​ 说明:大于等于= ​ 例: lt: ​ 说明:小于 ​ 例: le: ​ 说明:小于等于= ​ 例: between: ​ 说明:BETWEEN 值1 AND 值2 ​ 例: notBetween: ​ 说明:NOT BETWEEN 值1 AND 值2 ​ 例:

    2024年02月06日
    浏览(37)
  • LambdaQueryWrapper 设置自定义排序

    2024年02月11日
    浏览(36)
  • LambdaQueryWrapper用法

    LambdaQueryWrapper是一种针对 Mybatis Plus代码重构 而开发出来的轻量级查询条件封装工具(QueryWrapper),其实质是一种构建MyBatis Plus条件构建器。 它可以让查询条件(where)更容易理解,更简洁,易于将常见条件各自封装成一个方法,并且只有一个方法,以方便调用。 它可以简化

    2024年01月22日
    浏览(35)
  • 【MybatisPlus】LambdaQueryWrapper和QueryWapper的区别

    个人主页 :金鳞踏雨 个人简介 :大家好,我是 金鳞 ,一个初出茅庐的Java小白 目前状况 :22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客 :这里是CSDN,是我学习技术,总结知识的地方。希望和各位大佬交流,共同进

    2024年02月13日
    浏览(78)
  • Java:mybatis-plus-generator-ui 基于Mybatis-Plus的代码自助生成器

    引用官方文档上的简介: 提供交互式的Web UI用于生成兼容mybatis-plus框架的相关功能代码,包括Entity,Mapper,Mapper.xml,Service,Controller等 ,可以自定义模板以及各类输出参数,也可通过SQL查询语句直接生成代码。 文档 github: https://github.com/davidfantasy/mybatis-plus-generator-ui gitee: https://g

    2024年02月10日
    浏览(49)
  • 【Java系列】MyBatis-Plus常见面试题

      MyBatis-Plus是MyBatis框架的一个扩展库,它提供了一系列方便的API和工具,可以简化常见的数据库操作。MyBatis-Plus的优点包括: 提高开发效率:MyBatis-Plus提供了代码生成、分页、查询构建等功能,可以帮助开发人员快速开发数据库相关的功能。 简化操作:MyBatis-Plus提供了一些

    2024年02月08日
    浏览(47)
  • 【Java系列】Mybatis-Plus 使用方式介绍

    Mybatis-Plus 提供了多种方式来执行 SQL,包括使用注解、XML 映射文件和 Lambda 表达式等。其中,使用 Lambda 表达式是 Mybatis-Plus 推荐的方式,因为它更加直观和类型安全。 以下是一个使用 Lambda 表达式执行 SQL 的示例,现在我们有一个名为  User  的实体类,其中包含  id 、 name  

    2024年02月07日
    浏览(91)
  • 【Java系列】Mybatis-Plus 使用介绍二

    你只管努力,其他交给时间,时间会证明一切。 MyBatis-Plus 是 MyBatis 的增强工具,它简化了 MyBatis 的开发,并提供了许多实用的功能和工具类。下面是 MyBatis-Plus 的使用方法: 在 Maven 项目中,需要在 pom.xml 文件中添加如下依赖: 其中  mybatis-plus-boot-starter  是 MyBatis-Plus 的 S

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包