通常写SQL我们都会在Navicat里面写好条件测试没问题之后才会把SQL放到mapper里面,有次我在写Oracle的分页的时候因为用到了<=符号,在Navicat测试的时候是没问题的,但是放到mapper里面就会报(tag name expected)这个错误提示,这种情况在xml处理SQL的程序中需要特殊处理。

 解决方法很简单,我们只需要将个别特殊符号使用转义字符就好了:

< <= > >= &

&lt;

&lt;=

&gt;

&gt;=

&amp;

&apos;

&quot;

如果是在if标签里面的话就可以直接使用<、<=、>=、>符号

<if test="userId >0 && userId <= 10 ">
       t.userId = #{userId}
</if>

案列:
将 >= 改为&gt;=
<selece id="xxx" resultmap="xxx" parameterType="xxx">
 SELECT
 * 
 FROM
 ( SELECT ROWNUM AS rowno, t.ID FROM t_user t WHERE ROWNUM <= 2000) t_user 
 WHERE
 t_user.rowno >= 1;(错误写法)
</select>
<selece id="xxx" resultmap="xxx" parameterType="xxx">
 SELECT
 * 
 FROM
 ( SELECT ROWNUM AS rowno, t.ID FROM t_user t WHERE ROWNUM <= 2000) t_user 
 WHERE
 t_user.rowno &gt;=1;(正确写法)
</select>
上面就是如何解决MyBatis的mapper中SQL小于号或大于号报错的方法,我提供案列的是Oracle的分页查询SQL,如果大家分不清MySQL和Oracle的分页的话可以参考这篇文章:https://www.prettywordpress.com/back-end/development-faq/mysql-oracle-paging.html 。如果你喜欢这篇文章的话可以多多关注本网站,吃饭用大碗的程序猿会每天定时更新IT技术分享噢~

发表评论

电子邮件地址不会被公开。 必填项已用*标注