這篇文章主要介紹了mybatis中怎么判斷<if>標簽bool值類型為false,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
昨天實現一個功能,根據文章的id或者別名查找文章。
起初采用mybatis的Example進行查詢,對參數artName進行判斷,如果是純數字就byId查詢,否則就by別名。由于查詢文章的同時,需要關聯查詢文章分類標簽,所以選擇采用select語句映射的方式查詢,但又不想寫兩個查詢方法,就使用了mybatis中動態sql。
/** * 查詢文章 * @param artName id 或 別名 * @param byId 如果是 true 則按照id查詢 * 否則 按照別名查詢 * @return */ public Article selectByArtName(@Param(value = "artName") String artName, @Param(value = "byId") Boolean byId);
mapper中定義了一個方法,有artName和byId兩個參數,artName 表示id 或 別名,byId表示是否通過id查詢。
對byId Boolean值進行判斷時,出現false值無效的情況,在百度了一圈發現,普遍采用
<if test="byId != null"> a.id = #{artName} </if>
這種方式,當byId=true時正常執行,但為false時不生效。后采用<choose>標簽
<choose> <when test="byId"> a.id = #{artName} </when> <otherwise> a.alias = #{artName} </otherwise> </choose>
byId本身是bool值,不用進行判斷。
注意: byId不用加#{},不然false也會無效,如果加了#{}, 在與其他值進行比較時,
如: #{byId} == true
會報空指針錯誤,如果寫成#{byId} == 'true'
會報Linkhashmap無法轉換成String類型錯誤。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“mybatis中怎么判斷<if>標簽bool值類型為false”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。