Java MyBatis实战之QueryWrapper中and和or拼接技巧大全

 更新时间:2024年07月18日 10:36:21   作者:木头左  
在Java中QueryWrapper是MyBatis-Plus框架中的一个查询构造器,它提供了丰富的查询方法,其中包括and和or方法,可以用于构建复杂的查询条件,这篇文章主要给大家介绍了关于Java MyBatis实战之QueryWrapper中and和or拼接技巧的相关资料,需要的朋友可以参考下

一、引言

在Java Web开发中,MyBatis是一个非常流行的持久层框架。它通过XML或注解的方式将Java对象与数据库表进行映射,从而实现数据的增删改查操作。在使用MyBatis的过程中,经常会遇到需要拼接复杂查询条件的场景,这时候就需要使用到QueryWrapper这个强大的工具类。本文将详细介绍如何在MyBatis的QueryWrapper中使用and和or进行条件拼接,帮助大家更好地应对实际项目中的各种需求。

二、QueryWrapper简介

QueryWrapper是MyBatis提供的一个用于构建查询条件的类,它可以方便地实现各种复杂的查询条件组合。QueryWrapper提供了丰富的方法,如eq(等于)、ne(不等于)、like(模糊查询)、between(区间查询)等,可以满足各种查询需求。同时,QueryWrapper还支持and和or两种逻辑运算符,可以帮助轻松实现多条件组合查询。

三、and运算符的使用

1. and运算符的基本用法

在QueryWrapper中,and运算符用于连接两个或多个查询条件,表示这些条件都需要满足。例如,想要查询年龄大于18岁且性别为男的所有用户,可以使用如下代码:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18).eq("gender", "male");

这里,gt("age", 18)表示年龄大于18岁,eq("gender", "male")表示性别为男。使用and运算符将这两个条件连接起来,表示同时满足这两个条件。

2. and运算符链式调用

QueryWrapper支持链式调用,可以将多个查询条件连接起来,使代码更加简洁。例如,想要查询年龄在18到30岁之间、性别为女的所有用户,可以使用如下代码:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18).lt("age", 30).eq("gender", "female");

这里,ge("age", 18)表示年龄大于等于18岁,lt("age", 30)表示年龄小于等于30岁。使用and运算符将这三个条件连接起来,表示同时满足这三个条件。

3. and运算符嵌套使用

有时候,需要在一个查询条件中嵌套另一个查询条件,这时候就可以使用and运算符。例如,想要查询姓名为张三且年龄在25到35岁之间的所有用户,可以使用如下代码:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三").and(i -> i.ge("age", 25).lt("age", 35));

这里,使用了lambda表达式来实现嵌套的and条件。首先使用eq方法设置姓名为张三的条件,然后使用and方法连接一个匿名内部类实现的年龄范围查询条件。注意,这里的and方法是静态方法,可以直接调用。

四、or运算符的使用

or运算符用于连接两个或多个查询条件,表示其中一个条件满足即可。例如,想要查询年龄小于18岁或性别为男的所有用户,可以使用如下代码:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lt("age", 18).or().eq("gender", "male");

这里,使用了两次or方法来实现两个条件的or关系。第一次or方法将年龄小于18岁的条件添加到QueryWrapper中,第二次or方法将性别为男的条件添加到QueryWrapper中。需要注意的是,or方法只能用于非空的集合类型参数,所以在这里将or方法链式调用了两次。如果只有一个非空的集合类型参数,只需要调用一次or方法即可。

附:QueryWrapper中or和and并列使用

目的:想要实现一个sql中 某俩个字段是or的关系,其他字段查询是并列的关系。

实际:

1、如果直接使用or 和and ,and会作为一个整体条件,与or并列,查询出来的结果就不是我们想要的

2、可以把or里面的条件包起来,那么or里的就作为一个整体,和and的数据并列

3.那么在QueryWrapper中如何用代码实现呢?如图

QueryWrapper<GgsyxtKtzry> qw = new QueryWrapper<>();
        qw.lambda().eq(GgsyxtKtzry::getScbj, 0)
                .and(wreapper->{
                    wreapper.eq(GgsyxtKtzry::getZh, updateVO.getZh())
                    .or().eq(GgsyxtKtzry::getLxdh, updateVO.getLxdh());
                })
                .ne(GgsyxtKtzry::getUuid, updateVO.getUuid());

总结与展望

本文详细介绍了如何在MyBatis的QueryWrapper中使用and和or进行条件拼接,帮助大家更好地应对实际项目中的各种需求。在实际开发中,可能还会遇到其他更复杂的查询条件组合,这时候可以通过阅读MyBatis官方文档或参考其他优秀博客文章来学习更多的技巧和方法。希望本文能对大家有所帮助,祝大家在编程路上越走越远!

到此这篇关于Java MyBatis实战之QueryWrapper中and和or拼接技巧大全的文章就介绍到这了,更多相关MyBatis QueryWrapper中and和or拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析Java中XPath和JsonPath以及SpEL的用法与对比

    浅析Java中XPath和JsonPath以及SpEL的用法与对比

    XPath,即XML路径语言,是一种用于在XML文档中查找信息的语言,JsonPath是从XPath中发展而来的,专门用于JSON数据格式,本文主要来讲讲他们的用法与区别,需要的可以参考下
    2023-11-11
  • Android、iOS和Java通用的AES128加密解密示例代码

    Android、iOS和Java通用的AES128加密解密示例代码

    现在很多App在与服务器接口的请求和响应过程中,为了安全都会涉及到加密和解密的问题,如果不加的话就会是明文的,即使加了GZIP也可以被直接解压成明文。如果同时有Android和IOS的App的话、必须要保证加密和解密的算法一致、不然后台没法处理,下面通过这篇文章学习下。
    2016-11-11
  • springboot之Validation参数校验详细解读

    springboot之Validation参数校验详细解读

    这篇文章主要介绍了springboot之Validation参数校验详细解读,本篇是关于springboot的参数校验知识,当然也适用其它java应用,读完本篇将学会基本的参数校验,自定义参数校验和分组参数校验,需要的朋友可以参考下
    2023-10-10
  • java处理按钮点击事件的方法

    java处理按钮点击事件的方法

    下面小编就为大家带来一篇java处理按钮点击事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 根据list中对象的属性去重和排序小结(必看篇)

    根据list中对象的属性去重和排序小结(必看篇)

    下面小编就为大家带来一篇根据list中对象的属性去重和排序小结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Sentinel中三种流控模式的使用详解

    Sentinel中三种流控模式的使用详解

    这篇文章主要为大家详细介绍了Sentinel中三种流控模式(预热模式,排队等待模式和热点规则)的使用,文中的示例代码讲解详细,感兴趣的可以了解下
    2023-08-08
  • SpringBoot框架集成token实现登录校验功能

    SpringBoot框架集成token实现登录校验功能

    这篇文章主要为大家详细介绍了SpringBoot框架集成token实现登录校验功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java中的equsals和==

    Java中的equsals和==

    这篇文章主要介绍了Java中的equsals和==的相关内容,感兴趣的朋朋友可以参考下文
    2021-08-08
  • java IO实现电脑搜索、删除功能的实例

    java IO实现电脑搜索、删除功能的实例

    下面小编就为大家带来一篇java IO实现电脑搜索、删除功能的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Java线程同步方法实例总结

    Java线程同步方法实例总结

    这篇文章主要介绍了Java线程同步方法,结合实例形式总结分析了Java线程同步、并发控制相关实现方法及操作注意事项,需要的朋友可以参考下
    2018-08-08

最新评论