mybatis test標簽如何判斷值是否相等
mybatis test標簽判斷值是否相等
mybatis可以很方便生成動態sql,
常用的方式如下:
<if test="id != null and id !=''"> and id != #{id} </if>
但是在實際使用過程中可能會需要對某個輸入的值做具體判斷,然後根據輸入參數的值進行分支處理
<select id="xxxx" 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定義的值就可以瞭:
體驗:細節很重要,不可忽略。
做畢設,為這個問題糾結兩天,網上沒有人提到這一點,耽誤很久,以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 解讀Mapper與Mapper.xml文件之間匹配的問題
- MyBatis在DAO層定義接口返回類型泛型無效的解決
- mybatis中mapper.xml文件的常用屬性及標簽講解
- 淺談Mybatis之參數傳遞的幾種姿勢
- MyBatis中關於SQL的寫法總結