mybatis框架XML裏的SQL中使用大於小於號的問題

一、問題描述

mybatis框架下SQL查詢時,mybatis會錯誤的將>與<認爲是xml的分隔符,會導致如下類型的錯誤:

	<select id="findAllMenu" resultMap="MenuVOResultMap">
		SELECT mm.id as id,mm.title as title,mm.path as path,sm.id as sid,sm.title as stitle,sm.path as spath 
		from 
		(SELECT id,title,path,parent from sys_menus where <![CDATA[ parent >0 ]]> ) as sm 
		left join 
		(SELECT id,title,path,parent from sys_menus where <![CDATA[ parent <1 ]]>) mm
		on sm.parent=mm.id
	</select>
Caused by: org.xml.sax.SAXParseException: 元素內容必須由格式正確的字符數據或標記組成。

二、解決辦法

1、 <![CDATA[帶有>=和 <=的語句括起來]]>

	<select id="findAllMenu" resultMap="MenuVOResultMap">
		SELECT mm.id as id,mm.title as title,mm.path as path,sm.id as sid,sm.title as stitle,sm.path as spath 
		from 
		(SELECT id,title,path,parent from sys_menus where <![CDATA[ parent >0 ]]> ) as sm 
		left join 
		(SELECT id,title,path,parent from sys_menus where <![CDATA[ parent <1 ]]>) mm
		on sm.parent=mm.id
	</select>

2、用&lt;代替小於號,用&gt;代替大於號

	<select id="findAllMenu" resultMap="MenuVOResultMap">
		SELECT mm.id as id,mm.title as title,mm.path as path,sm.id as sid,sm.title as stitle,sm.path as spath 
		from 
		(SELECT id,title,path,parent from sys_menus where parent &gt; 0) as sm 
		left join 
		(SELECT id,title,path,parent from sys_menus where parent &lt; 1 ) mm
		on sm.parent=mm.id
	</select>

 

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