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拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用OkHttp3以Multipart/Form-Data方式上传文件方式

    使用OkHttp3以Multipart/Form-Data方式上传文件方式

    在开发过程中,使用multipart/form-data进行图片上传是一个常见的需求,本文通过一个实际案例,讲解了如何在项目中添加OkHttp3库依赖,并使用multipart/form-data进行图片上传,首先,介绍了ContentType的概念和常见类型
    2024-10-10
  • 基于Java 注解(Annotation)的基本概念详解

    基于Java 注解(Annotation)的基本概念详解

    基于Java 注解(Annotation)的基本概念详解
    2013-04-04
  • Spring Boot 实现程序的优雅退出(详细步骤)

    Spring Boot 实现程序的优雅退出(详细步骤)

    Spring Boot 为我们提供了优雅退出的功能,使应用程序能够在关闭时正常处理完所有当前请求,避免请求被中断导致数据丢失或不一致等问题,本文将全面介绍如何在 Spring Boot 应用程序中实现优雅退出,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • spring IOC中三种依赖注入方式

    spring IOC中三种依赖注入方式

    这篇文章主要介绍了spring IOC中三种依赖注入方式,Spring使用注入方式,为什么使用注入方式,这系列问题实际归结起来就是一句话,Spring的注入和IoC(本人关于IoC的阐述)反转控制是一回事
    2021-08-08
  • 学习java多线程

    学习java多线程

    本文运用了大量的代码讲解了java多线程,它可以提高程序并行执行的速度,更快的响应程序。感兴趣的小伙伴一起来看看吧
    2021-08-08
  • SSM项目中配置LOG4J日志的方法

    SSM项目中配置LOG4J日志的方法

    本篇文章主要介绍了SSM项目中配置LOG4J日志的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 关于阿里巴巴TransmittableThreadLocal使用解读

    关于阿里巴巴TransmittableThreadLocal使用解读

    文章主要介绍了三种ThreadLocal的使用:ThreadLocal、InheritableThreadLocal和TransmittableThreadLocal,ThreadLocal和InheritableThreadLocal在单线程和部分情况下可以正常工作,但TransmittableThreadLocal在处理线程池时表现更佳
    2025-02-02
  • 深入理解Java的接口与抽象类

    深入理解Java的接口与抽象类

    本文主要介绍java 的接口和抽象类,对接口和抽象类进行介绍对比,深入理解,有需要的小伙伴可以参考下
    2016-07-07
  • Java调用新浪api通过Ip查询地区

    Java调用新浪api通过Ip查询地区

    这篇文章主要介绍了Java调用新浪接口通过Ip查询地区,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 浅析SpringBoot及环境搭建过程

    浅析SpringBoot及环境搭建过程

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.这篇文章主要介绍了SpringBoot介绍及环境搭建,需要的朋友可以参考下
    2018-01-01

最新评论