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 &gt;= #{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。

推薦閱讀: