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

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

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

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

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

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

經(jīng)過(guò)查詢(xún)資料發(fā)現(xiàn),mybatis是用OGNL表達(dá)式來(lái)解析的,在OGNL的表達(dá)式中,數(shù)字’3’會(huì)被解析成字符,java是強(qiáng)類(lèi)型的,char 和 一個(gè)string 會(huì)導(dǎo)致不等,所以if標(biāo)簽中的sql不會(huì)被解析。

所以應(yīng)該改為:

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

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

mybatis的test判斷注意事項(xiàng)

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • Spring的@RequestParam對(duì)象綁定方式

    Spring的@RequestParam對(duì)象綁定方式

    這篇文章主要介紹了Spring的@RequestParam對(duì)象綁定方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringMVC框架使用jackson封裝數(shù)據(jù)過(guò)程中遇到的問(wèn)題及解決

    SpringMVC框架使用jackson封裝數(shù)據(jù)過(guò)程中遇到的問(wèn)題及解決

    這篇文章主要介紹了SpringMVC框架使用jackson封裝數(shù)據(jù)過(guò)程中遇到的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 一文讓你搞懂如何手寫(xiě)一個(gè)redis分布式鎖

    一文讓你搞懂如何手寫(xiě)一個(gè)redis分布式鎖

    既然要搞懂Redis分布式鎖,那肯定要有一個(gè)需要它的場(chǎng)景。高并發(fā)售票問(wèn)題就是一個(gè)經(jīng)典案例。本文就來(lái)利用這個(gè)場(chǎng)景手寫(xiě)一個(gè)redis分布式鎖,讓你徹底搞懂它
    2022-11-11
  • 基于Jenkins+Maven+Gitea+Nexus搭建CICD環(huán)境的方式

    基于Jenkins+Maven+Gitea+Nexus搭建CICD環(huán)境的方式

    這篇文章主要介紹了基于Jenkins+Maven+Gitea+Nexus從0到1搭建CICD環(huán)境,大家都知道Nexus是一套“開(kāi)箱即用”的系統(tǒng)不需要數(shù)據(jù)庫(kù),它使用文件系統(tǒng)加Lucene來(lái)組織數(shù)據(jù),需要的朋友可以參考下
    2022-01-01
  • Java編程實(shí)現(xiàn)帕斯卡三角形代碼示例

    Java編程實(shí)現(xiàn)帕斯卡三角形代碼示例

    這篇文章主要介紹了Java編程實(shí)現(xiàn)帕斯卡三角形代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • spring boot如何指定啟動(dòng)端口

    spring boot如何指定啟動(dòng)端口

    這篇文章主要介紹了spring boot如何指定啟動(dòng)端口,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Spring Boot 事務(wù)示例詳解

    Spring Boot 事務(wù)示例詳解

    Spring Boot 提供了強(qiáng)大的事務(wù)管理功能,通過(guò) @Transactional 注解可以方便地配置事務(wù)的傳播行為和屬性,理解和合理應(yīng)用這些配置,可以有效地提高應(yīng)用程序的數(shù)據(jù)一致性和完整性,本文介紹Spring Boot 事務(wù)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2025-04-04
  • 基于spring注入為null的原因及解決方案

    基于spring注入為null的原因及解決方案

    這篇文章主要介紹了spring注入為null的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Maven打包SpringBoot工程的實(shí)現(xiàn)示例

    Maven打包SpringBoot工程的實(shí)現(xiàn)示例

    在使用Spring Boot和Maven的項(xiàng)目中,你可以使用Maven來(lái)打包你的項(xiàng)目,本文主要介紹了Maven打包SpringBoot工程的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • Java如何定義Long類(lèi)型

    Java如何定義Long類(lèi)型

    這篇文章主要介紹了Java如何定義Long類(lèi)型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論

额敏县| 哈尔滨市| 乌什县| 隆德县| 政和县| 昌邑市| 馆陶县| 塔城市| 云安县| 绥棱县| 通海县| 乐平市| 明水县| 灵台县| 余姚市| 大渡口区| 光泽县| 天门市| 蒙自县| 西丰县| 瓮安县| 玉环县| 泸州市| 霍州市| 鄂托克前旗| 赤城县| 开封县| 紫云| 沿河| 宿州市| 墨竹工卡县| 福安市| 平舆县| 方山县| 祁连县| 潢川县| 三江| 思茅市| 雷山县| 淮安市| 张家港市|