mybatis test標簽如何判斷值是否相等
mybatis可以很方便生成動態sql,
常用的方式如下:<if test='id != null and id !=’’'> and id != #{id} </if>
但是在實際使用過程中可能會需要對某個輸入的值做具體判斷,然后根據輸入參數的值進行分支處理
<select parameterType='map' resultMap='BaseResultMap'> 。。。。。。。 <choose> <when test='hasAttach.toString() == ’1’.toString()'> having attachCount >= #{hasAttach} </when> <otherwise> having attachCount = #{hasAttach} </otherwise> </choose>
鑒于這個mapper查詢接口傳入的參數為Map<String,Object>類型,如果不進行toString的轉換的話默認是對進行進行的對比,因此就無法達到預期的比較字符串的效果。
mybatis if test標簽、動態sql問題之前用#{0}和#{1}雖然值能傳到后臺但一直不能正確校驗,怎么改都無法校驗成功。
錯誤代碼:這是因為:dao層(或mapper層)中沒有用@Param(“”)正確傳值。
修改后:mybatis中也把0,1改成@Paran定義的值就可以了:
體驗:細節很重要,不可忽略。
做畢設,為這個問題糾結兩天,網上沒有人提到這一點,耽誤很久,以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
