""<""&"問題" type="hidden"/>

mybatis映射文件中不能使用">""<""&"問題


一、原因:

XML 文檔中放置了一個類似 “<” 字符,那么這個文檔會產生一個錯誤,這是因為解析器會把它解釋為新元素的開始。因此你不能這樣寫:

<select id="selectUnTopAllMessages" parameterType="java.util.Map" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from guestbook_message
    where is_del = 'N' and wall_id = #{wallId}
    and (is_top = 0 or (is_top = 1 and top_expire_time  <  now()))
    order by id desc
  </select>

 

 

正確的寫法是這樣:

<select id="selectUnTopAllMessages" parameterType="java.util.Map" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from guestbook_message
    where is_del = 'N' and wall_id = #{wallId}
    and (is_top = 0 or (is_top = 1 and top_expire_time  <![CDATA[ < ]]>  now()))
    order by id desc
  </select>

 

二、其他

XML 文檔中的文本均會被解析器解析,只有 CDATA 區段(CDATA section)中的文本會被解析器忽略。
術語 CDATA 指的是不應由 XML 解析器進行解析的文本數據(Unparsed Character Data)。
在 XML 元素中,”<” 和 “&” 是非法的。
“<” 會產生錯誤,因為解析器會把該字符解釋為新元素的開始。
“&” 也會產生錯誤,因為解析器會把該字符解釋為字符實體的開始。


在 XML 中有 5 個預定義的實體引用:

&lt;        <       小於
&gt;        >       大於
&amp;       &       和號
&apos;      '       省略號
&quot;      "       引號

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM