【MybatisPlus】LambdaQueryWrapper和QueryWapper的区别

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

个人主页:金鳞踏雨

个人简介:大家好,我是金鳞,一个初出茅庐的Java小白

目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作

我的博客:这里是CSDN,是我学习技术,总结知识的地方。希望和各位大佬交流,共同进步 ~

MyBatisPlus的条件查询构造器 

MyBatis-Plus 是一个基于 MyBatis 的增强工具库,旨在简化 MyBatis 的使用并提供更多的便利功能。其中,QueryWrapper 和 LambdaQueryWrapper 都是 MyBatis-Plus 提供的查询条件构造器,用于构建 SQL 查询语句的条件部分。

QueryWrapper 

QueryWrapper 是 MyBatis-Plus 最基础的查询条件构造器之一。它通过链式调用的方式构建查询条件,并使用普通的字符串作为字段名、操作符和值。它的使用方式类似于传统的 SQL 查询。

LambdaQueryWrapper  

LambdaQueryWrapper 是在 QueryWrapper 的基础上增加了使用 Lambda 表达式的功能,使得构建查询条件更加类型安全、易读,并且能够在编译时进行语法检查。它通过方法引用的方式来指定实体类的属性,并提供了丰富的方法来构建查询条件。

类图

【MybatisPlus】LambdaQueryWrapper和QueryWapper的区别,Mybatis与MybatisPlus,Java全栈学习笔记,java,mybatis,mybatisplus,sql

  • Wrapper:条件构造抽象类,最顶端父类
  • AbstractWrapper:用于查询条件封装,生成 sql 的 where 条件
  • QueryWrapper:Entity 对象封装操作类,不是用lambda语法
  • UpdateWrapper:Update 条件封装,用于Entity对象更新操作
  • AbstractLambdaWrapper :​Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
  • ​LambdaQueryWrapper :用于Lambda语法使用的查询Wrapper
  • ​LambdaUpdateWrapper :​Lambda 更新封装Wrapper

简单使用

public class User {
    private Long id;
    private String name;
    private Integer age;
    private LocalDateTime createTime;
    // 其他字段...
    // 省略 getter 和 setter 方法
}
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 25)
            .like("name", "John")
            .orderByDesc("create_time")
            .last("limit 10");
List<User> userList = userMapper.selectList(queryWrapper);
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getAge, 25)
                .like(User::getName, "John")
                .orderByDesc(User::getCreateTime)
                .last("limit 10");
List<User> userList = userMapper.selectList(lambdaQueryWrapper);

我们首先构建了 QueryWrapper 或 LambdaQueryWrapper 对象,并设置查询条件。然后,创建了一个 Page 对象来指定要查询的页码每页数量。最后,通过调用映射器接口的 selectPage() 方法来执行分页查询,得到分页后的结果。

注意,selectPage() 方法返回的是一个 Page对象,其中包含了分页后的数据和总记录数等信息。

如果你希望在构建查询条件时具有更好的类型安全性和易读性,推荐使用 LambdaQueryWrapper 。如果简单查询条件已经满足需求,或者需要更灵活的拼接查询条件,可以使用 QueryWrapper 。

注意:lambdaQueryWrapper.eq(User::getAge, 25)

里面的 User::getAge 表示查询 age 值为25的用户。这是一种 Java 8+ 中的语法,用于方法引用,直接引用了实体类的属性和方法

优缺点

LambdaQueryWrapper

  • 优点:类型安全、易读性高,可以直接使用实体类的属性和方法。
  • 缺点:在某些复杂查询操作下可能不支持。

QueryWrapper

  • 优点:更灵活,支持复杂查询操作和 SQL 片段拼接。
  • 缺点:类型不安全、可读性较差。

一般情况下,如果你的查询条件相对简单且你更注重代码的清晰性和类型安全性,可以优先考虑使用 LambdaQueryWrapper。但如果你需要进行复杂的查询操作,特别是涉及到复杂的 SQL 片段拼接等情况,可能需要使用 QueryWrapper

文章到这里就结束了,如果有什么疑问的地方,可以在评论区指出~

希望能和大佬们一起努力,诸君顶峰相见

再次感谢各位小伙伴儿们的支持!!!文章来源地址https://www.toymoban.com/news/detail-649301.html

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

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

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

相关文章

  • Java在线代码生成工具,支持JPA、Mybatis、MybatisPlus

    【Java代码生成神器】自动化生成Java实体类、代码、增删改查功能!点击访问 推荐一个自己每天都在用的Java代码生成器!这个网站支持在线生成Java代码,包含完整的ControllerServiceEntityDao代码,完整的增删改查功能! 还可以自定义自己的代码模板、自由配置高级选项,指定

    2024年02月19日
    浏览(32)
  • MyBatis-Plus中LambdaQueryWrapper的探究

    MyBatis-Plus的条件构造器LambdaQueryWrapper是开发中常用的工具,和普通的QueryWrapper不同的是,LambdaQueryWrappe 可以识别Lambda表达式,获取Lambda表达式对应的字段名称,在使用上更方便,此外,当对象的字段发生变更时也更安全。 我们知道,Lambda表达式本质上是一个匿名内部类,实现

    2024年01月16日
    浏览(32)
  • Mybatis-Plus高级查询LambdaQueryWrapper&QueryWrapper

    目录 前言 Wrapper 查询构造器 查询条件 前期准备 查询条件 allEq eq ne gt ge lt le between,notBetween like,notLike likeLeft likeRight isNull 空值查询 isNotNull 非空值查询 in notIn inSql、notInSql groupBy orderBy、orderByAsc、orderByDesc or、and 解决方法 last exists、notExists 总结 附加MySQL语句执行顺序 我刚刚毕

    2024年02月04日
    浏览(52)
  • Mybatis-Plus之四种lambda方式LambdaQueryWrapper,QueryWrapper<实体>().lambda(),LambdaQueryChainWrapper<实体>

    lambda四种表达形式 使用了lambda表达式 可以通过方法引用的方式来使用实体字段名的操作,避免直接写数据库表字段名时的错写名字; 一、LambdaQueryWrapper 二、QueryWrapper实体().lambda() 三、Wrappers.实体lambdaQuery(),Wrappers.lambdaQuery(实体.class) Wrappers.实体lambdaQuery() Wrappers.lambdaQuery(实

    2023年04月11日
    浏览(44)
  • MyBatis-Plus——条件构造器Wapper、QUeryWrapper、UpdateWrapper、LambdaQueryWrapper、LambdaUpdateWrapper(详解)

    目录 一、条件构造器简介 二、QueryWrapper组装查询条件 三、QueryWrapper组装排序条件 四、QueryWrapper组装删除条件 五、QueryWrapper实现修改功能 六、QueryWrapper条件的优先级 七、QueryWrapper组装select字句(查询指定字段) 八、QueryWrapper组装子查询 九、UpdateWrapper实现修改功能 十、Q

    2024年02月07日
    浏览(38)
  • Mybatis Plus中使用LambdaQueryWrapper进行分页以及模糊查询对比传统XML方式进行分页

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

    2024年02月12日
    浏览(44)
  • MyBatis-Plus 引入依赖导致的Error creating bean和java.lang.NoClassDefFoundError: com/baomidou/mybatisplus问题

     使用mybatis-plus出现的一些问题记录。 问题错误截图 问题原因: 依赖冲突 项目主pom文件中引入了mybatis-plus-boot-start依赖,版本为 3.5.3 业务包中引入mybatis-plus代码生成器依赖版本为 3.4.1 导致mybatis-plus-core核心包存在两个版本,导致冲突   解决办法 修改业务包中mybatis-plus代码

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

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

    2024年02月03日
    浏览(69)
  • SpringBoot整合Druid、Mybatis、MybatisPlus以及MybatisPlus的使用

    1)引入jar包 2)在application.yml中 注意: initialization-mode: always 第一次用过之后注释掉,或者将其改成never 3).启动项目,访问:http://127.0.0.1:8080/druid/          用户名:admin/密码:123456(在配置文件中有) ps:还记得mybatis中的sqlSessionFactory要传入一个dataSource吗?所以我们先学习

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

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

    2024年02月06日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包