一、问题描述
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、用<;代替小于号,用>;代替大于号
<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 > 0) as sm
left join
(SELECT id,title,path,parent from sys_menus where parent < 1 ) mm
on sm.parent=mm.id
</select>
本文详细解析了在MyBatis框架中使用SQL查询时,如何正确处理大于号(>)和小于号(<),避免XML解析错误。介绍了两种有效方法:使用CDATA包裹条件语句和实体引用代替特殊符号。
5840

被折叠的 条评论
为什么被折叠?



