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

mybatis中的多重if?條件判斷

 更新時(shí)間:2022年03月11日 10:11:42   作者:入門(mén)小白  
這篇文章主要介紹了mybatis中的多重if?條件判斷,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis 多重if 條件判斷

要注意的是

當(dāng)指定某種情況的時(shí)候,條件需要添加 toString() 方法

mybatis常用判斷語(yǔ)法(標(biāo)簽)

作為java開(kāi)發(fā),我們常用的判斷有if、switch語(yǔ)句,其實(shí)在MyBatis中也有對(duì)應(yīng)的標(biāo)簽,用于動(dòng)態(tài)生成sql語(yǔ)句。

if判斷

<where>
? ? <if test="null != statusCode and 0 != statusCode">
? ? ? ? AND b.STATUS_CODE = #{statusCode, jdbcType=VARCHAR}
? ? </if>
</where>

一般來(lái)說(shuō),很多程序猿朋友會(huì)在<if>標(biāo)簽前增加WHERE 1=1語(yǔ)句,但其實(shí)只需要像上面代碼中增加<where>標(biāo)簽包裹所有<if>語(yǔ)句,<if>內(nèi)語(yǔ)句前面都有and或者or關(guān)鍵字就行:

  • MyBatis會(huì)自動(dòng)判斷所有條件不滿足時(shí),不添加where語(yǔ)句;
  • 如果有多判斷語(yǔ)句,并且滿足一個(gè)條件以上時(shí),會(huì)把第一條滿足的(如果第一條有and或者or關(guān)鍵字時(shí))and或者or關(guān)鍵字刪除;

choose判斷

<choose>
?? ?<when test="5 == queryType">
?? ??? ?CASE WHEN statusCode IN (1,6) THEN 1 ELSE 2 END,createTime DESC
?? ?</when>
?? ?<when test="1 != queryType and 9 != queryType">
?? ??? ?createTime DESC
?? ?</when>
?? ?<otherwise>
?? ??? ?<choose>
?? ??? ??? ?<when test="null == orderType or 1 == orderType">
?? ??? ??? ??? ?auditTime
?? ??? ??? ?</when>
?? ??? ??? ?<when test="2 == orderType">
?? ??? ??? ??? ?downloadCount
?? ??? ??? ?</when>
?? ??? ??? ?<when test="3 == orderType">
?? ??? ??? ??? ?browseCount
?? ??? ??? ?</when>
?? ??? ??? ?<otherwise>
?? ??? ??? ??? ?is666Count
?? ??? ??? ?</otherwise>
?? ??? ?</choose>
?? ??? ?<if test="null == orderMode or 1 == orderMode">
?? ??? ??? ?DESC
?? ??? ?</if>
?? ?</otherwise>
</choose>

上面的代碼使用了標(biāo)簽嵌套特性,用于復(fù)雜條件判斷。

choose判斷跟if else語(yǔ)句作用相同,起到根據(jù)條件執(zhí)行不同分支邏輯的作用。

而otherwise跟多個(gè)if else中最后一個(gè)else的作用相同,在以上條件都不滿足時(shí),執(zhí)行otherwise中的邏輯。 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • java如何刪除以逗號(hào)隔開(kāi)的字符串中某一個(gè)值

    java如何刪除以逗號(hào)隔開(kāi)的字符串中某一個(gè)值

    這篇文章主要介紹了java如何刪除以逗號(hào)隔開(kāi)的字符串中某一個(gè)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 使用java執(zhí)行定時(shí)任務(wù)示例

    使用java執(zhí)行定時(shí)任務(wù)示例

    這篇文章主要介紹了使用java執(zhí)行定時(shí)任務(wù)示例,需要的朋友可以參考下
    2014-04-04
  • Spring Boot2.3 新特性分層JAR的使用

    Spring Boot2.3 新特性分層JAR的使用

    這篇文章主要介紹了Spring Boot2.3 新特性分層JAR的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • MyBatis超詳細(xì)講解如何實(shí)現(xiàn)分頁(yè)功能

    MyBatis超詳細(xì)講解如何實(shí)現(xiàn)分頁(yè)功能

    MyBatis-Plus?是一個(gè)?Mybatis?增強(qiáng)版工具,在?MyBatis?上擴(kuò)充了其他功能沒(méi)有改變其基本功能,為了簡(jiǎn)化開(kāi)發(fā)提交效率而存在,本篇文章帶用它實(shí)現(xiàn)分頁(yè)功能
    2022-03-03
  • java打印菱形及直角和等腰三角形的方法

    java打印菱形及直角和等腰三角形的方法

    用Java輸出菱形本身是一個(gè)比較簡(jiǎn)單的問(wèn)題,這是Java初學(xué)者都要編寫(xiě)的一個(gè)算法,下面這篇文章主要給大家介紹了關(guān)于java打印菱形及直角和等腰三角形的方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • JVM中堆內(nèi)存和棧內(nèi)存的區(qū)別

    JVM中堆內(nèi)存和棧內(nèi)存的區(qū)別

    本文主要介紹了JVM中堆內(nèi)存和棧內(nèi)存的區(qū)別,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • SpringBoot集成WebSocket遇到的問(wèn)題及解決

    SpringBoot集成WebSocket遇到的問(wèn)題及解決

    這篇文章主要介紹了SpringBoot集成WebSocket遇到的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-07-07
  • springboot 使用logback啟動(dòng)報(bào)警報(bào)錯(cuò)的解決

    springboot 使用logback啟動(dòng)報(bào)警報(bào)錯(cuò)的解決

    這篇文章主要介紹了springboot 使用logback啟動(dòng)報(bào)警報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Springboot項(xiàng)目中定時(shí)任務(wù)的四種實(shí)現(xiàn)方式詳解

    Springboot項(xiàng)目中定時(shí)任務(wù)的四種實(shí)現(xiàn)方式詳解

    Spring的@Scheduled注解是一種非常簡(jiǎn)單和便捷的實(shí)現(xiàn)定時(shí)任務(wù)的方式,通過(guò)在方法上添加@Scheduled注解,我們可以指定方法在特定的時(shí)間間隔或固定的時(shí)間點(diǎn)執(zhí)行,本文給大家介紹Springboot項(xiàng)目中定時(shí)任務(wù)的四種實(shí)現(xiàn)方式,感興趣的的朋友一起看看b
    2024-02-02
  • JAVA線程池原理實(shí)例詳解

    JAVA線程池原理實(shí)例詳解

    這篇文章主要介紹了JAVA線程池原理,結(jié)合實(shí)例形式詳細(xì)分析了java線程池概念、原理、創(chuàng)建、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-03-03

最新評(píng)論