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。
推薦閱讀:
- Mybatis查詢條件包含List的情況說明
- MyBatis在DAO層定義接口返回類型泛型無效的解決
- mybatis test標簽如何判斷值是否相等
- MyBatis中關於SQL的寫法總結
- 關於Mybatis動態sql中test的坑點總結