溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis中if標簽判斷不生效如何解決

發布時間:2021-02-07 18:03:31 來源:億速云 閱讀:970 作者:Leah 欄目:開發技術

mybatis中if標簽判斷不生效如何解決?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

實際需求

<if test="computationRule == '1'">
  FROM app_sz_bbb a
</if>
<if test="computationRule == '2'">
  FROM app_ccc a
</if>

這種情況不生效,

原因:mybatis是用OGNL表達式來解析的,在OGNL的表達式中,'0'會被解析成字符,java是強類型的,char 和 一個string 會導致不等,所以if標簽中的sql不會被解析。

先說怎么解決

三種:

加 .toString()

<if test="computationRule == '1'.toString()">
  FROM app_sz_bbb a
</if>
<if test="computationRule == '2'.toString()">
  FROM app_ccc a
</if>

choose when 標簽代替

<choose>
   <when test="computationRule == '1'">
   FROM app_sz_bbb a
   </when>
   <otherwise>
     FROM app_sz_bbb a
   </otherwise>
 </choose>

單引號 換成雙引號

<if test='computationRule == "1"'>
  FROM app_sz_bbb a
</if>
<if test='computationRule == "2"'>
  FROM app_ccc a
</if>

MyBatis 中if 標簽 判斷字符串不生效

異常sql 的mapper 文件:

<if test="isBound != null and isBound !='' and isBound == '1'">
  and box_sid is not null 
</if>
<if test="isBound != null and isBound !='' and isBound == '2'">
  and box_sid is null 
</if>

正確sql 的mapper 文件

<if test="isBound != null and isBound !='' and isBound == '1'.toString()">
  and box_sid is not null 
</if>
<if test="isBound != null and isBound !='' and isBound == '2'.toString()">
  and box_sid is null 
 </if>

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女