最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis中<if>和<choose>的區(qū)別及“=”判斷方式

 更新時(shí)間:2022年06月06日 14:09:13   作者:Simple_Demo  
這篇文章主要介紹了Mybatis中<if>和<choose>的區(qū)別及“=”判斷方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

<if>和<choose>的區(qū)別及“=”判斷

在項(xiàng)目中xml文件經(jīng)常會(huì)遇到在判斷等于某個(gè)值時(shí)加什么條件不等于某個(gè)值的時(shí)候加什么條件

比如下面這個(gè)例子:

<if ?test=" name != null">
?? ?AND T.NAME = #{NAME,jdbcType=VARCHAR}
</if>
<if ?test=" name ?== null">
?? ?ORDER BY NAME,ID
</if>

正確很好的寫法需要引入<choose>標(biāo)簽

?<choose>
? ? ? ?<when test=" name != null">
? ? ? ? ? AND T.NAME = #{NAME,jdbcType=VARCHAR}
? ? ? </when>
? ? ?<otherwise>
? ? ? ? ORDER BY T.PRODUCT_TYPE_CODE, T.SORT DESC, T.CREATE_TIME
? ? ?</otherwise>
</choose>

第一種錯(cuò)誤寫法導(dǎo)致的結(jié)果就是不會(huì)去做任何判斷即使name不為空。

為什么只能用<choose>標(biāo)簽,源碼還沒有研究,或者我這個(gè)例子本身就有問題現(xiàn)在記錄下來(lái),在后續(xù)的更新中我會(huì)再次總結(jié)一下這個(gè)問題。

<!--錯(cuò)誤的寫法-->

<if test="newsImage != null and newsImage == 'y'"> ?
? ? <![CDATA[ and len(newsImage) > 0 ]]> ?
</if> ?
<!-- 正確的,穩(wěn)定,推薦使用 --> ?
<if test="newsImage != null and newsImage == 'y'.toString()"> ?
? ? <![CDATA[ and len(newsImage) > 0 ]]> ?
</if> ?

判斷 newsImage == 'y' 時(shí),有人認(rèn)為成功,但實(shí)際上是不成功的,需要改為  newsImage == 'y'.toString()方可成功,

原因具體沒有細(xì)入研究,根據(jù)實(shí)際使用推測(cè)應(yīng)該是 “等于” 在java中是個(gè)比較復(fù)雜問題,涉及的“等于”有可能是變量地址相等,或者是變量值內(nèi)容相等,在XML文件中簡(jiǎn)單的 == 在經(jīng)過MyBatis處理后無(wú)法判斷是哪種類型的“相等”,所以加.toString()做強(qiáng)制轉(zhuǎn)換操作,MyBatis就知道是值內(nèi)容的比較,當(dāng)然就成功了;

注意這個(gè)常量不限于數(shù)字,對(duì)于字母,如 'y' 同樣需要加上 .toString()方可成功。

Mybatis選擇choose和條件if用法

choose用法

? ? ? ? <choose>
?? ??? ??? ?<when test="showType == 1">
?? ??? ??? ??? ?IFNULL(k.fname,'未知') as pro_name,
?? ??? ??? ?</when>
?? ??? ??? ?<when test="showType == 2">
?? ??? ??? ??? ?IFNULL(e.fname,'未知') as business_name,
?? ??? ??? ?</when>
?? ??? ??? ?<when test="showType == 3">
?? ??? ??? ??? ?IFNULL(f.fname,'未知') as area_name,
?? ??? ??? ?</when>
?? ??? ??? ?<when test="showType == 4">
?? ??? ??? ??? ?IFNULL(h.fname,'未知') as sale_name,
?? ??? ??? ?</when>
?? ??? ??? ?<otherwise>
?? ??? ??? ??? ?IFNULL(j.F_PJQD_XMDJ,'未知') as project_type,
?? ??? ??? ?</otherwise>
?? ??? ?</choose>

if用法

? ? ? ? <if test="businessName != null and businessName != ''">
?? ??? ??? ?and e.fname = #{businessName}
?? ??? ?</if>
?? ??? ?<if test="areaName != null and areaName != ''">
?? ??? ??? ?and f.fname = #{areaName}
?? ??? ?</if>

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

相關(guān)文章

  • JAVA面向?qū)ο笤O(shè)計(jì)寵物類方式

    JAVA面向?qū)ο笤O(shè)計(jì)寵物類方式

    本指南涉及JAVA面向?qū)ο蟮膶櫸镱愒O(shè)計(jì),包括寵物類的父類及其子類小貓類和小狗類,用戶可以選擇養(yǎng)貓或養(yǎng)狗,給寵物起名字,實(shí)現(xiàn)喂食互動(dòng),同時(shí)寵物具有飽食度和快樂度屬性,適合初學(xué)者學(xué)習(xí)面向?qū)ο笤O(shè)計(jì)
    2024-10-10
  • 使用FeignClient設(shè)置動(dòng)態(tài)Url

    使用FeignClient設(shè)置動(dòng)態(tài)Url

    這篇文章主要介紹了使用FeignClient設(shè)置動(dòng)態(tài)Url方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Spring使用注解實(shí)現(xiàn)Bean的自動(dòng)裝配

    Spring使用注解實(shí)現(xiàn)Bean的自動(dòng)裝配

    大家好,本篇文章主要講的是Spring使用注解實(shí)現(xiàn)Bean的自動(dòng)裝配,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • Spring AI Alibaba接入大模型時(shí)的依賴問題小結(jié)

    Spring AI Alibaba接入大模型時(shí)的依賴問題小結(jié)

    文章介紹了如何在pom.xml文件中配置SpringAI Alibaba依賴,并提供了一個(gè)示例pom.xml文件,同時(shí),建議將Maven倉(cāng)庫(kù)鏡像設(shè)置為阿里云以提高下載速度,具體配置方法跟隨小編一起學(xué)習(xí)下吧
    2025-02-02
  • 利用exe4j生成java的exe文件

    利用exe4j生成java的exe文件

    本文主要介紹了利用exe4j生成java的exe文件,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 利用注解配置Spring容器的方法

    利用注解配置Spring容器的方法

    本篇文章主要介紹了利用注解配置Spring容器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-12-12
  • SpringBoot前后端傳輸加密設(shè)計(jì)實(shí)現(xiàn)方案

    SpringBoot前后端傳輸加密設(shè)計(jì)實(shí)現(xiàn)方案

    這篇文章主要給大家介紹了關(guān)于SpringBoot前后端傳輸加密設(shè)計(jì)實(shí)現(xiàn)方案的相關(guān)資料,包括數(shù)據(jù)加密方案、解密傳輸數(shù)據(jù)實(shí)現(xiàn)方案和響應(yīng)數(shù)據(jù)加密實(shí)現(xiàn)方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • 如何在springMVC的controller中獲取request

    如何在springMVC的controller中獲取request

    這篇文章主要介紹了如何在springMVC的controller中獲取request,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • java 裝飾模式(Decorator Pattern)詳解及實(shí)例代碼

    java 裝飾模式(Decorator Pattern)詳解及實(shí)例代碼

    裝飾器模式(Decorator Pattern)允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個(gè)包裝
    2016-10-10
  • IntellJ IDEA神器使用技巧(小結(jié))

    IntellJ IDEA神器使用技巧(小結(jié))

    這篇文章主要介紹了IntellJ IDEA神器使用技巧(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評(píng)論

镶黄旗| 山阴县| 大荔县| 交口县| 罗甸县| 长葛市| 五台县| 勃利县| 奉化市| 洛南县| 特克斯县| 无棣县| 饶阳县| 广安市| 敖汉旗| 浮梁县| 比如县| 微山县| 泽库县| 葫芦岛市| 登封市| 华亭县| 繁峙县| 穆棱市| 荣昌县| 肇东市| 怀宁县| 利辛县| 密山市| 东丰县| 翁牛特旗| 北辰区| 定南县| 依兰县| 永善县| 循化| 靖江市| 桂阳县| 曲水县| 金湖县| 浙江省|