溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mybatis中的if?test判斷入?yún)⒅祮栴}怎么解決

發(fā)布時(shí)間:2022-06-06 15:10:29 來源:億速云 閱讀:471 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“mybatis中的if test判斷入?yún)⒅祮栴}怎么解決”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“mybatis中的if test判斷入?yún)⒅祮栴}怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

mybatis if test判斷入?yún)⒌闹?/h3>

1.第一種判斷方式

<if test=' requisition != null and requisition == "Y" '>
   AND 表字段 = #{requisition}
</if>

2.第二種判斷方式

<if test=" requisition != null and requisition == 'Y'.toString() ">
  AND 表字段 = #{requisition}
</if>

if test動態(tài)判斷數(shù)字時(shí)出現(xiàn)的錯(cuò)誤

mybatis中if test判斷數(shù)字

在實(shí)現(xiàn)搜索功能時(shí)碰到的錯(cuò)誤,很多時(shí)候我們會在數(shù)據(jù)庫中使用一個(gè)字段來作為狀態(tài)保存,如:0=男,1=女;0=禁止,1=啟用等。

mybatis中的if?test判斷入?yún)⒅祮栴}怎么解決

無論我選擇停用、還是啟用,都將整個(gè)表格的數(shù)據(jù)顯示出來,沒有起到篩選的作用。

通過排除,找到了導(dǎo)致問題的代碼:

    <select id="queryAllByLimit" resultMap="SystemMenuMap">
        select
          id, pid, title, icon, href, sort, status
        from system_menu
        <where>
            <if test="systemMenu.status != null and systemMenu.status != '' ">
                and status = #{systemMenu.status}
            </if>
        </where>
    </select>

改為:

    <select id="queryAllByLimit" resultMap="SystemMenuMap">
        select
          id, pid, title, icon, href, sort, status
        from system_menu
        <where>
            <if test="systemMenu.status != null">
                and status = #{systemMenu.status}
            </if>
        </where>
    </select>

原因:

<if test="systemMenu.status != null and systemMenu.status != '' ">

只對判斷String類型的字符串時(shí)起作用,由于status是Integer類型,判斷條件不成立,沒起到作用。如:當(dāng)傳入的值是1時(shí),&rsquo;1&rsquo;會被解析成字符。

讀到這里,這篇“mybatis中的if test判斷入?yún)⒅祮栴}怎么解決”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)
AI