mybatis中的if test判斷入參的值問題

mybatis if test判斷入參的值

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動態判斷數字時出現的錯誤

mybatis中if test判斷數字

在實現搜索功能時碰到的錯誤,很多時候我們會在數據庫中使用一個字段來作為狀態保存,如:0=男,1=女;0=禁止,1=啟用等。

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

通過排除,找到瞭導致問題的代碼:

    <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類型的字符串時起作用,由於status是Integer類型,判斷條件不成立,沒起到作用。如:當傳入的值是1時,’1’會被解析成字符。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: