国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Mybatis-puls——條件查詢的三種格式+條件查詢null判定+查詢投影

這篇具有很好參考價(jià)值的文章主要介紹了Mybatis-puls——條件查詢的三種格式+條件查詢null判定+查詢投影。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

在mybatis_plus的封裝中的Wrapper<T>接口參數(shù)就是用于封裝查詢條件?

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?在測(cè)試類中啟動(dòng)如上一個(gè)簡(jiǎn)單的查詢,然后控制臺(tái)運(yùn)行會(huì)輸出一大堆無關(guān)日志,這里先把這些日志關(guān)閉

?去除無關(guān)日志文件

先新建一個(gè)XML配置文件?

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?然后變成如下,這里configuration標(biāo)簽里面什么都沒有配置就是取消所有日志文件了

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

然后再次啟動(dòng)就只剩下spring和mybatis的圖標(biāo)了

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言?

這兩個(gè)圖標(biāo)也可以消去,在application.yml中關(guān)閉mybatis的banner的顯示,選擇falsemybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?再設(shè)置spring的banner-mode為off就可以把spring的banner一起關(guān)掉了mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?再次運(yùn)行就可以看見一個(gè)沒有多余日志輸出的界面了

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?按條件查詢的三種方式

?要實(shí)現(xiàn)按條件查詢,進(jìn)入到selectlist的源碼里面看見需要一個(gè)wrapper的對(duì)象,在wrapper源碼中可以看見wrapper<T>是一個(gè)抽象類如下。

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?在Wrapper這個(gè)抽象類下面還有一系列的實(shí)現(xiàn)類,這里要用到的是QueryWrapper這個(gè)實(shí)現(xiàn)類,專門用于做查詢封裝操作的,下面還有一些諸如updatewrapper用于更新操作的?

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

設(shè)置查詢條件(and關(guān)系)

方式一

如下所示新建了一個(gè)QueryWrapper對(duì)象,然后設(shè)置了兩個(gè)條件

	@Test
	void contextLoads() {
        //方式一:按條件查詢
        QueryWrapper qw=new QueryWrapper();
        //age小于25
        qw.lt("age",25);
        //age大于17
        qw.gt("age",17);
        List<mpdb>  userlist=userDao.selectList(qw);
        System.out.println(userlist);
    }

?然后輸出正常

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?方式二

        //方式二:lambda格式按條件查詢
        QueryWrapper<mpdb> qw=new QueryWrapper<mpdb>();
        qw.lambda().lt(mpdb::getAge,25);
        qw.lambda().gt(mpdb::getAge,17);

        List<mpdb>  userlist=userDao.selectList(qw);
        System.out.println(userlist);

同樣正常輸出 ,并且防止了因?yàn)樽侄蚊麑戝e(cuò)而找不到出錯(cuò)地方

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?方式三

在方式二上簡(jiǎn)化了

       // 方式三:lambda格式按條件查詢
        LambdaQueryWrapper<mpdb> lqw=new LambdaQueryWrapper<mpdb>();
        lqw.lt(mpdb::getAge,25);
        lqw.gt(mpdb::getAge,17);
        List<mpdb>  userlist=userDao.selectList(lqw);
        System.out.println(userlist);

輸出結(jié)果依舊正確

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

三種方式大部分都推薦用第三種?,第一種在特殊情況下才使用。

如果過條件過多可以采用這種鏈?zhǔn)骄幊痰姆绞?

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

設(shè)置查詢條件(or關(guān)系)

條件語句里面加上一個(gè).or()

        lqw.lt(mpdb::getAge,25).or().gt(mpdb::getAge,17);

NULL值處理

應(yīng)用場(chǎng)景如下,有空值到后臺(tái)時(shí)要有對(duì)應(yīng)的處理?

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

這里到先到pojo層或者說domain層下面新建一個(gè)實(shí)體類mpdbQuery用于封裝條件查詢的條件

,這里直接繼承mpdb實(shí)體類即可

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言??然后要分析可能有哪些字段有范圍,比如日期型有范圍,數(shù)值型也有范圍,在該表中只有age有限制,所以新建一個(gè)age2用于描述年齡的上限,收集來的age屬性用于描述下限。

準(zhǔn)備好后在測(cè)試類中如下

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

正常輸出

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言?如果有一個(gè)為空的話會(huì)有如下,查詢失敗

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?在lt方法還有第二種實(shí)現(xiàn),傳一個(gè)boolean類型?

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?lt的代碼變成如下,如果的判斷不成立就不加入該條件。原本上面的都是無條件加入條件

        lqw.lt(null!=mq.getAge2(),mpdb::getAge,mq.getAge2());

?當(dāng)然,也可以用if判斷,但是每個(gè)都要加的話就太多了

查詢投影

所謂查詢投影就是設(shè)置查詢出來的結(jié)果是什么樣,達(dá)成只顯示其中的某一些字段

使用如下的一個(gè)select方法,參數(shù)就是要投影的字段名

  LambdaQueryWrapper<mpdb> lqw=new LambdaQueryWrapper<mpdb>();
        lqw.select(mpdb::getId,mpdb::getName,mpdb::getAge);
        List<mpdb>  userlist=userDao.selectList(lqw);
        System.out.println(userlist);

輸出如下,只有那三個(gè)字段mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?上面這個(gè)是lambda格式專用。

如果是用第一種方法的話就要變成如下

        //非lambda格式的投影
                QueryWrapper<mpdb> lqw=new QueryWrapper<mpdb>();
        lqw.select("id","name","age","tel");
        List<mpdb>  userlist=userDao.selectList(lqw);
        System.out.println(userlist);

輸出如下

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?針對(duì)count(*)的查詢投影

查詢投影只能用這個(gè)方式來做,不能用lambda方式

如果要查詢count(*)的話因?yàn)閷?shí)體類沒有對(duì)應(yīng)的用于接收count(*)的字段,所以這里換一個(gè)方式接收,改成如下,String就是字段名,object就是值

這里as count的作用是起別名?

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?輸出如下

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?分組查詢

使用groupBy方法

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言?輸出如下,每一組tel都有對(duì)應(yīng)的數(shù)量

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?小結(jié)

mybatisplus查詢條件為null,Mybatis,mybatis,java,開發(fā)語言

?如果有不支持的格式的話就要恢復(fù)最早寫mybatis的格式來寫這了,在DAO層中使用@Select注解的方式文章來源地址http://www.zghlxwxcb.cn/news/detail-801090.html

到了這里,關(guān)于Mybatis-puls——條件查詢的三種格式+條件查詢null判定+查詢投影的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JDBC連接Oracle的三種URL格式

    使用jdbc連接oracle時(shí)url有三種格式 格式一: Oracle JDBC Thin using an?SID 這種格式是最簡(jiǎn)單也是用得最多的。 你的oracle的sid可以通過一下指令獲得: 格式二: Oracle JDBC Thin using a ServiceName 注意這里的格式,@后面有//, port后面:換成了/,這種格式是Oracle 推薦的格式,因?yàn)閷?duì)于集群來說,

    2024年02月16日
    瀏覽(20)
  • mybatis插入后返回主鍵id的三種方式

    mybatis插入后返回主鍵id的三種方式

    第一種:在xml文件,insert標(biāo)簽屬性中,添加useGeneratedKeys和keyProperty,如圖 ? 第二種:在xml文件,添加selectKey標(biāo)簽屬性,各個(gè)屬性值含義:resultType:查詢結(jié)果的類型;keyProperty:把查詢的值賦給誰;order:在插入前還是后執(zhí)行,id在insert語句插入之后才會(huì)生成id,所以要在插入之

    2024年02月15日
    瀏覽(25)
  • Springboot應(yīng)用中Mybatis輸出SQL日志的三種方法

    目錄 一、方法一:指定mybatis日志級(jí)別 二、方法二:配置mybatis-config.xml 三、方法三:指定整個(gè)mapper包下的日志級(jí)別

    2024年01月20日
    瀏覽(32)
  • mysql去重查詢的三種方法

    mysql去重查詢的三種方法

    數(shù)據(jù)庫生成環(huán)境中經(jīng)常會(huì)遇到表中有重復(fù)的數(shù)據(jù),或者進(jìn)行關(guān)聯(lián)過程中產(chǎn)生重復(fù)數(shù)據(jù),下面介紹三種剔除重復(fù)數(shù)據(jù)的方法,請(qǐng)針對(duì)自己的應(yīng)用場(chǎng)景選擇使用。 下圖測(cè)試數(shù)據(jù)中user_name為lilei、zhaofeng的用戶是重復(fù)數(shù)據(jù)。 代碼如下(示例): 如下圖,已將數(shù)據(jù)剔重,重復(fù)數(shù)據(jù)僅保

    2024年02月06日
    瀏覽(41)
  • Mybatis Plus之DQL(條件查詢方式、查詢投影、查詢條件設(shè)定、字段映射與表名映射)

    Mybatis Plus之DQL(條件查詢方式、查詢投影、查詢條件設(shè)定、字段映射與表名映射)

    增刪改查四個(gè)操作中,查詢是非常重要的也是非常復(fù)雜的操作,這塊需要我們重點(diǎn)學(xué)習(xí)下,這節(jié)我們主要學(xué)習(xí)的內(nèi)容有: 條件查詢方式 查詢投影 查詢條件設(shè)定 字段映射與表名映射 1.1 條件查詢的類 MyBatisPlus將書寫復(fù)雜的SQL查詢條件進(jìn)行了封裝,使用編程的形式完成查詢條件的

    2024年02月05日
    瀏覽(23)
  • Mybatis1.4 多條件查詢

    Mybatis1.4 多條件查詢

    我們經(jīng)常會(huì)遇到如上圖所示的多條件查詢,將多條件查詢的結(jié)果展示在下方的數(shù)據(jù)列表中。而我們做這個(gè)功能需要分析最終的SQL語句應(yīng)該是什么樣,思考兩個(gè)問題 條件表達(dá)式 如何連接 條件字段 企業(yè)名稱 和 品牌名稱 需要進(jìn)行模糊查詢,所以條件應(yīng)該是: 簡(jiǎn)單的分析后,我

    2024年02月10日
    瀏覽(46)
  • Mybatis-Plus批量添加或修改數(shù)據(jù)的三種方式

    Mybatis-Plus批量添加或修改數(shù)據(jù)的三種方式

    提供的方法 是遍歷每一個(gè)元素,判斷主鍵是否存在,如果存在則做更新,不存在添加 先獲取表中所有的主鍵 ,然后 判斷是否已存在,存在更新,不存在添加 on duplicate key update 是Mysql特有的語法,如下圖所示,表中id 為主鍵 再插入id為1的數(shù)據(jù),則提示主鍵已存在 改成如下

    2024年02月06日
    瀏覽(20)
  • mysql JDBC的三種查詢(普通、流式、游標(biāo))

    mysql JDBC的三種查詢(普通、流式、游標(biāo))

    使用JDBC向mysql發(fā)送查詢時(shí),有三種方式: 常規(guī)查詢:JDBC驅(qū)動(dòng)會(huì)阻塞的一次性讀取全部查詢的數(shù)據(jù)到 JVM 內(nèi)存中,或者分頁讀取 流式查詢:每次執(zhí)行rs.next時(shí)會(huì)判斷數(shù)據(jù)是否需要從mysql服務(wù)器獲取,如果需要觸發(fā)讀取一批數(shù)據(jù)(可能n行)加載到 JVM 內(nèi)存進(jìn)行業(yè)務(wù)處理 游標(biāo)查詢:

    2024年02月08日
    瀏覽(25)
  • python %f格式化輸出float的三種用法

    %f是python內(nèi)置的格式化輸出符號(hào),主要用于輸出浮點(diǎn)數(shù),一般需要跟print()內(nèi)置函數(shù)進(jìn)行搭配使用。下面的內(nèi)容將介紹三種%f的用法。 %f輸出浮點(diǎn)數(shù),可能會(huì)保留小數(shù)點(diǎn)后6位數(shù),下方實(shí)例中,%f為格式化輸出符號(hào),第二個(gè)%符號(hào)則用于按順序匹配對(duì)應(yīng)的%f符號(hào): %f輸出指定小數(shù)點(diǎn)

    2024年02月15日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包