<select id="findPlanResultDetailInfo" resultType="PlanResultDeatil">
select * from(
SELECT
<include refid="planResultDeatilColumns" />
FROM tb_plan_result_detail a
<include refid="planResultDeatilJoins" />
<where>
<if test="resultId != null and resultId != ''">
a.result_id = #{resultId}
</if>
</where>
ORDER BY a.tablename,a.fieldname
)where rownum <= 5
</select>
刚才在mybatis中使用 rownum 获取前5条数据时,报错,sql如上,错误如下:
原因就在于在mybatis中sql是写在xml映射文件中的,如果sql中有一些特殊字符的话,在解析xml文件的时候就会被转义
解决办法一:使用特殊转义字符
rownum<=5 : 解决代码如下: 将 “< ” 替换成 “<”
<select id="findPlanResultDetailInfo" resultType="PlanResultDeatil">
select * from(
SELECT
<include refid="planResultDeatilColumns" />
FROM tb_plan_result_detail a
<include refid="planResultDeatilJoins" />
<where>
<if test="resultId != null and resultId != ''">
a.result_id = #{resultId}
</if>
</where>
ORDER BY a.tablename,a.fieldname
)where rownum <= 5
</select>
注:
解决办法二:使用<![CDATA[ ]]>符号 将 “<=”放在 <![CDATA[ ]]> 中 ,亲测有效
<select id="findPlanResultDetailInfo" resultType="PlanResultDeatil">
select * from(
SELECT
<include refid="planResultDeatilColumns" />
FROM tb_plan_result_detail a
<include refid="planResultDeatilJoins" />
<where>
<if test="resultId != null and resultId != ''">
a.result_id = #{resultId}
</if>
</where>
ORDER BY a.tablename,a.fieldname
)where rownum <![CDATA[<=]]> 5
</select>