欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?MyBatis實(shí)戰(zhàn)之QueryWrapper中and和or拼接技巧大全

 更新時(shí)間:2024年07月18日 10:36:21   作者:木頭左  
在Java中QueryWrapper是MyBatis-Plus框架中的一個(gè)查詢構(gòu)造器,它提供了豐富的查詢方法,其中包括and和or方法,可以用于構(gòu)建復(fù)雜的查詢條件,這篇文章主要給大家介紹了關(guān)于Java?MyBatis實(shí)戰(zhàn)之QueryWrapper中and和or拼接技巧的相關(guān)資料,需要的朋友可以參考下

一、引言

在Java Web開發(fā)中,MyBatis是一個(gè)非常流行的持久層框架。它通過XML或注解的方式將Java對象與數(shù)據(jù)庫表進(jìn)行映射,從而實(shí)現(xiàn)數(shù)據(jù)的增刪改查操作。在使用MyBatis的過程中,經(jīng)常會遇到需要拼接復(fù)雜查詢條件的場景,這時(shí)候就需要使用到QueryWrapper這個(gè)強(qiáng)大的工具類。本文將詳細(xì)介紹如何在MyBatis的QueryWrapper中使用and和or進(jìn)行條件拼接,幫助大家更好地應(yīng)對實(shí)際項(xiàng)目中的各種需求。

二、QueryWrapper簡介

QueryWrapper是MyBatis提供的一個(gè)用于構(gòu)建查詢條件的類,它可以方便地實(shí)現(xiàn)各種復(fù)雜的查詢條件組合。QueryWrapper提供了豐富的方法,如eq(等于)、ne(不等于)、like(模糊查詢)、between(區(qū)間查詢)等,可以滿足各種查詢需求。同時(shí),QueryWrapper還支持and和or兩種邏輯運(yùn)算符,可以幫助輕松實(shí)現(xiàn)多條件組合查詢。

三、and運(yùn)算符的使用

1. and運(yùn)算符的基本用法

在QueryWrapper中,and運(yùn)算符用于連接兩個(gè)或多個(gè)查詢條件,表示這些條件都需要滿足。例如,想要查詢年齡大于18歲且性別為男的所有用戶,可以使用如下代碼:

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

這里,gt("age", 18)表示年齡大于18歲,eq("gender", "male")表示性別為男。使用and運(yùn)算符將這兩個(gè)條件連接起來,表示同時(shí)滿足這兩個(gè)條件。

2. and運(yùn)算符鏈?zhǔn)秸{(diào)用

QueryWrapper支持鏈?zhǔn)秸{(diào)用,可以將多個(gè)查詢條件連接起來,使代碼更加簡潔。例如,想要查詢年齡在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運(yùn)算符將這三個(gè)條件連接起來,表示同時(shí)滿足這三個(gè)條件。

3. and運(yùn)算符嵌套使用

有時(shí)候,需要在一個(gè)查詢條件中嵌套另一個(gè)查詢條件,這時(shí)候就可以使用and運(yùn)算符。例如,想要查詢姓名為張三且年齡在25到35歲之間的所有用戶,可以使用如下代碼:

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

這里,使用了lambda表達(dá)式來實(shí)現(xiàn)嵌套的and條件。首先使用eq方法設(shè)置姓名為張三的條件,然后使用and方法連接一個(gè)匿名內(nèi)部類實(shí)現(xiàn)的年齡范圍查詢條件。注意,這里的and方法是靜態(tài)方法,可以直接調(diào)用。

四、or運(yùn)算符的使用

or運(yùn)算符用于連接兩個(gè)或多個(gè)查詢條件,表示其中一個(gè)條件滿足即可。例如,想要查詢年齡小于18歲或性別為男的所有用戶,可以使用如下代碼:

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

這里,使用了兩次or方法來實(shí)現(xiàn)兩個(gè)條件的or關(guān)系。第一次or方法將年齡小于18歲的條件添加到QueryWrapper中,第二次or方法將性別為男的條件添加到QueryWrapper中。需要注意的是,or方法只能用于非空的集合類型參數(shù),所以在這里將or方法鏈?zhǔn)秸{(diào)用了兩次。如果只有一個(gè)非空的集合類型參數(shù),只需要調(diào)用一次or方法即可。

附:QueryWrapper中or和and并列使用

目的:想要實(shí)現(xiàn)一個(gè)sql中 某倆個(gè)字段是or的關(guān)系,其他字段查詢是并列的關(guān)系。

實(shí)際:

1、如果直接使用or 和and ,and會作為一個(gè)整體條件,與or并列,查詢出來的結(jié)果就不是我們想要的

2、可以把or里面的條件包起來,那么or里的就作為一個(gè)整體,和and的數(shù)據(jù)并列

3.那么在QueryWrapper中如何用代碼實(shí)現(xiàn)呢?如圖

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());

總結(jié)與展望

本文詳細(xì)介紹了如何在MyBatis的QueryWrapper中使用and和or進(jìn)行條件拼接,幫助大家更好地應(yīng)對實(shí)際項(xiàng)目中的各種需求。在實(shí)際開發(fā)中,可能還會遇到其他更復(fù)雜的查詢條件組合,這時(shí)候可以通過閱讀MyBatis官方文檔或參考其他優(yōu)秀博客文章來學(xué)習(xí)更多的技巧和方法。希望本文能對大家有所幫助,祝大家在編程路上越走越遠(yuǎn)!

到此這篇關(guān)于Java MyBatis實(shí)戰(zhàn)之QueryWrapper中and和or拼接技巧大全的文章就介紹到這了,更多相關(guān)MyBatis QueryWrapper中and和or拼接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

    在開發(fā)過程中,使用multipart/form-data進(jìn)行圖片上傳是一個(gè)常見的需求,本文通過一個(gè)實(shí)際案例,講解了如何在項(xiàng)目中添加OkHttp3庫依賴,并使用multipart/form-data進(jìn)行圖片上傳,首先,介紹了ContentType的概念和常見類型
    2024-10-10
  • 基于Java 注解(Annotation)的基本概念詳解

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

    基于Java 注解(Annotation)的基本概念詳解
    2013-04-04
  • Spring Boot 實(shí)現(xiàn)程序的優(yōu)雅退出(詳細(xì)步驟)

    Spring Boot 實(shí)現(xiàn)程序的優(yōu)雅退出(詳細(xì)步驟)

    Spring Boot 為我們提供了優(yōu)雅退出的功能,使應(yīng)用程序能夠在關(guān)閉時(shí)正常處理完所有當(dāng)前請求,避免請求被中斷導(dǎo)致數(shù)據(jù)丟失或不一致等問題,本文將全面介紹如何在 Spring Boot 應(yīng)用程序中實(shí)現(xiàn)優(yōu)雅退出,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • spring IOC中三種依賴注入方式

    spring IOC中三種依賴注入方式

    這篇文章主要介紹了spring IOC中三種依賴注入方式,Spring使用注入方式,為什么使用注入方式,這系列問題實(shí)際歸結(jié)起來就是一句話,Spring的注入和IoC(本人關(guān)于IoC的闡述)反轉(zhuǎn)控制是一回事
    2021-08-08
  • 學(xué)習(xí)java多線程

    學(xué)習(xí)java多線程

    本文運(yùn)用了大量的代碼講解了java多線程,它可以提高程序并行執(zhí)行的速度,更快的響應(yīng)程序。感興趣的小伙伴一起來看看吧
    2021-08-08
  • SSM項(xiàng)目中配置LOG4J日志的方法

    SSM項(xiàng)目中配置LOG4J日志的方法

    本篇文章主要介紹了SSM項(xiàng)目中配置LOG4J日志的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 關(guān)于阿里巴巴TransmittableThreadLocal使用解讀

    關(guān)于阿里巴巴TransmittableThreadLocal使用解讀

    文章主要介紹了三種ThreadLocal的使用:ThreadLocal、InheritableThreadLocal和TransmittableThreadLocal,ThreadLocal和InheritableThreadLocal在單線程和部分情況下可以正常工作,但TransmittableThreadLocal在處理線程池時(shí)表現(xiàn)更佳
    2025-02-02
  • 深入理解Java的接口與抽象類

    深入理解Java的接口與抽象類

    本文主要介紹java 的接口和抽象類,對接口和抽象類進(jìn)行介紹對比,深入理解,有需要的小伙伴可以參考下
    2016-07-07
  • Java調(diào)用新浪api通過Ip查詢地區(qū)

    Java調(diào)用新浪api通過Ip查詢地區(qū)

    這篇文章主要介紹了Java調(diào)用新浪接口通過Ip查詢地區(qū),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 淺析SpringBoot及環(huán)境搭建過程

    淺析SpringBoot及環(huán)境搭建過程

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程.這篇文章主要介紹了SpringBoot介紹及環(huán)境搭建,需要的朋友可以參考下
    2018-01-01

最新評論