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

mybatis中 if-test 數(shù)字判斷的坑及解決

 更新時間:2022年06月06日 14:18:53   作者:ElevenVitaminC  
這篇文章主要介紹了mybatis中 if-test 數(shù)字判斷的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

if-test數(shù)字判斷的坑

在項目中偶然發(fā)現(xiàn)一個判斷數(shù)字的if沒有起任何作用,代碼如下

<if test="timeType !=null and timeType!='' and timeType == '3'">
? ? AND
? ? ...
</if>

經(jīng)過查詢資料發(fā)現(xiàn),mybatis是用OGNL表達式來解析的,在OGNL的表達式中,數(shù)字’3’會被解析成字符,java是強類型的,char 和 一個string 會導致不等,所以if標簽中的sql不會被解析。

所以應該改為:

?<if test="timeType !=null and timeType!='' and timeType == '3'.toString() ">
? ? ? ? ? ? AND
? ? ? ? ? ? ...
?</if>

然后發(fā)現(xiàn)確實解決了這個問題,特此記錄。

mybatis的test判斷注意事項

在使用mybatis進行判斷的時候,一定要注意傳入的數(shù)據(jù)類型與判斷的目標值類型是否一致。

最近在一次開發(fā)過程,誤將一個傳入的整型數(shù)據(jù)使用了下面的判斷方式:

<if test="appType != null and appType != ''">
    and a.c_appType = #{appType}
</if>

其中,appType是一個整型數(shù)據(jù)??梢钥吹?,在test判斷里面使用了 appType != ''。

在進行業(yè)務功能測試的時候發(fā)現(xiàn),當傳入的值是0時,該條件篩選沒有起作用,通過調(diào)試發(fā)現(xiàn),mybatis會將空字符串轉(zhuǎn)換成double類型的0.0,如下圖所示:

同樣的,整數(shù)數(shù)據(jù)也會轉(zhuǎn)換為double類型,如下圖所示:

所以,mybatis在判斷的時候,數(shù)字0和空字符串是相等的,而我們的if判斷里,是兩者不相等時該條件才會起作用。

因此,在使用mybatis判斷的時候,一定要注意類型是否一致,數(shù)字類型就不要判斷空字符串的情況了。

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

相關文章

  • springboot實現(xiàn)配置本地訪問端口及路徑

    springboot實現(xiàn)配置本地訪問端口及路徑

    這篇文章主要介紹了springboot實現(xiàn)配置本地訪問端口及路徑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring Boot中使用Server-Sent Events (SSE) 實現(xiàn)實時數(shù)據(jù)推送教程

    Spring Boot中使用Server-Sent Events (SSE) 實

    Server-Sent Events (SSE) 是HTML5引入的一種輕量級的服務器向瀏覽器客戶端單向推送實時數(shù)據(jù)的技術(shù),本文主要介紹了Spring Boot中使用Server-Sent Events (SSE) 實現(xiàn)實時數(shù)據(jù)推送教程,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • RabbitMQ?延遲隊列實現(xiàn)訂單支付結(jié)果異步階梯性通知(實例代碼)

    RabbitMQ?延遲隊列實現(xiàn)訂單支付結(jié)果異步階梯性通知(實例代碼)

    這篇文章主要介紹了RabbitMQ?延遲隊列實現(xiàn)訂單支付結(jié)果異步階梯性通知,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • spring?boot對敏感信息進行加解密的項目實現(xiàn)

    spring?boot對敏感信息進行加解密的項目實現(xiàn)

    本文主要介紹了spring?boot對敏感信息進行加解密的項目實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Maven 版本管理與 flatten-maven-plugin 插件的使用解析

    Maven 版本管理與 flatten-maven-plugin 插件的使用解析

    這篇文章主要介紹了Maven 版本管理與 flatten-maven-plugin 插件的使用解析,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • spring的同一定時任務上一次的任務未結(jié)束前不會啟動這次任務問題

    spring的同一定時任務上一次的任務未結(jié)束前不會啟動這次任務問題

    這篇文章主要介紹了spring的同一定時任務上一次的任務未結(jié)束前不會啟動這次任務問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java并發(fā)工具之CyclicBarrier使用詳解

    Java并發(fā)工具之CyclicBarrier使用詳解

    這篇文章主要介紹了Java并發(fā)工具之CyclicBarrier使用詳解,CyclicBarrier是一個同步器,允許一組線程相互之間等待,直到到達某個公共屏障點(common barrier point),再繼續(xù)執(zhí)行,需要的朋友可以參考下
    2023-12-12
  • 使用SpringAop動態(tài)獲取mapper執(zhí)行的SQL,并保存SQL到Log表中

    使用SpringAop動態(tài)獲取mapper執(zhí)行的SQL,并保存SQL到Log表中

    這篇文章主要介紹了使用SpringAop動態(tài)獲取mapper執(zhí)行的SQL,并保存SQL到Log表中問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java 1.8 動態(tài)代理源碼深度分析

    java 1.8 動態(tài)代理源碼深度分析

    下面小編就為大家?guī)硪黄猨ava 1.8 動態(tài)代理源碼深度分析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Spring?Boot?3.x?集成?Feign的詳細過程

    Spring?Boot?3.x?集成?Feign的詳細過程

    本文闡述了如何在SpringBoot3.x中集成Feign,以實現(xiàn)微服務之間的調(diào)用,主要步驟包括:搭建chain-common服務,創(chuàng)建chain-starter/chain-feign-starter服務,集成Feign到chain-system和chain-iot-channel服務,配置Feign,感興趣的朋友一起看看吧
    2024-09-09

最新評論