Mybatis 特殊符號(大於,小於,不等於)及常用函數總結

目錄

1. 使用場景

2、實現方式

2.1、轉義特殊符號方式

2.2、使用 CDATA 區段

3、Mybatis if 判斷等於一個字符串

4、mysql二進制轉成字符串


1. 使用場景

    因爲我們在日常代碼Mybatis 動態拼接語句時候經常使用到 大於(>,>=)、小於(<,<=)、不等於(<> ,!=)符號。由於此符號包含了尖括號,Mybatis使用的 *.xml文件格式。於是
需要之內尖括號進行相關的轉義或者使用 CDATA 區段。

2、實現方式

2.1、轉義特殊符號方式

註釋:嚴格地講,在 XML 中僅有字符 "<"和"&" 是非法的。省略號、引號和大於號是合法的,但是把它們替換爲實體引用是個好的習慣。

符號 原符號 替換符號
小於 < &lt;
小於等於 <= &lt;=
大於 > &gt;
大於等於 >= &gt;=
不等於 <> &lt;&gt;
& &amp;
單引號 &apos;
雙引號 " &quot;
mapper文件寫法: 
select * form tablenme t where t.code &lt;&gt; 1

2.2、使用 CDATA 區段

所有 XML 文檔中的文本均會被解析器解析。只有 CDATA 區段(CDATA section)中的文本會被解析器忽略。

大於等於 <![CDATA[ >= ]]>  
小於等於 <![CDATA[ <= ]]> 
不等於<![CDATA[ <> ]]>

mapper文件寫法: 
select t.* form tablenme t where t.code <![CDATA[<>]]> 1

3、Mybatis if 判斷等於一個字符串

當傳入的type的值爲note 的時候,if判斷內的sql也不會執行。

<if test="type=='note'">  
    and status = 0   
</if>

mybatis是使用的OGNL表達式來進行解析的,在OGNL的表達式中,'note'會被解析成字符,因爲java是強類型的,char 和 一個String 會導致不等。所以if標籤中的sql不會被解析。

需要解決這個問題,只需要把代碼修改成:

    <if test='type=="note"'>  //注意是雙引號,不是單引號!!!
        and status = 0   
    </if> 

4、mysql二進制轉成字符串

SELECT  cast(fieldName as CHAR)  FROM tablename 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章