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

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

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

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

在項目中xml文件經常會遇到在判斷等于某個值時加什么條件不等于某個值的時候加什么條件

比如下面這個例子:

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

正確很好的寫法需要引入<choose>標簽

?<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>

第一種錯誤寫法導致的結果就是不會去做任何判斷即使name不為空。

為什么只能用<choose>標簽,源碼還沒有研究,或者我這個例子本身就有問題現在記錄下來,在后續(xù)的更新中我會再次總結一下這個問題。

<!--錯誤的寫法-->

<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' 時,有人認為成功,但實際上是不成功的,需要改為  newsImage == 'y'.toString()方可成功,

原因具體沒有細入研究,根據實際使用推測應該是 “等于” 在java中是個比較復雜問題,涉及的“等于”有可能是變量地址相等,或者是變量值內容相等,在XML文件中簡單的 == 在經過MyBatis處理后無法判斷是哪種類型的“相等”,所以加.toString()做強制轉換操作,MyBatis就知道是值內容的比較,當然就成功了;

注意這個常量不限于數字,對于字母,如 '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>

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關文章

  • JAVA面向對象設計寵物類方式

    JAVA面向對象設計寵物類方式

    本指南涉及JAVA面向對象的寵物類設計,包括寵物類的父類及其子類小貓類和小狗類,用戶可以選擇養(yǎng)貓或養(yǎng)狗,給寵物起名字,實現喂食互動,同時寵物具有飽食度和快樂度屬性,適合初學者學習面向對象設計
    2024-10-10
  • 使用FeignClient設置動態(tài)Url

    使用FeignClient設置動態(tài)Url

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

    Spring使用注解實現Bean的自動裝配

    大家好,本篇文章主要講的是Spring使用注解實現Bean的自動裝配,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Spring AI Alibaba接入大模型時的依賴問題小結

    Spring AI Alibaba接入大模型時的依賴問題小結

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

    利用exe4j生成java的exe文件

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

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

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

    SpringBoot前后端傳輸加密設計實現方案

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

    如何在springMVC的controller中獲取request

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

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

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

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

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

最新評論

天门市| 肇州县| 垦利县| 博野县| 双峰县| 阳新县| 科尔| 兴和县| 寿阳县| 武安市| 阳朔县| 南木林县| 岢岚县| 买车| 清水河县| 凤翔县| 九寨沟县| 兰西县| 贵阳市| 汕头市| 扎鲁特旗| 上饶县| 萝北县| 长顺县| 庐江县| 民权县| 突泉县| 抚顺县| 西和县| 积石山| 建湖县| 苏尼特右旗| 芜湖县| 丽水市| 高密市| 普宁市| 南宫市| 中西区| 五常市| 建阳市| 丹江口市|