A+
解决MyBatis的mapper中SQL小于号或大于号报错-tag name expected
标签: Oracle 最后编辑:2020年5月26日
通常写SQL我们都会在Navicat里面写好条件测试没问题之后才会把SQL放到mapper里面,有次我在写Oracle的分页的时候因为用到了<=符号,在Navicat测试的时候是没问题的,但是放到mapper里面就会报(tag name expected)这个错误提示,这种情况在xml处理SQL的程序中需要特殊处理。
解决方法很简单,我们只需要将个别特殊符号使用转义字符就好了:
< | <= | > | >= | & | ' | " |
< |
<= |
> |
>= |
& |
' |
" |
如果是在if标签里面的话就可以直接使用<、<=、>=、>符号
<if test="userId >0 && userId <= 10 "> t.userId = #{userId} </if>
案列:
将 >= 改为>=
<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 >=1;(正确写法) </select>
上面就是如何解决MyBatis的mapper中SQL小于号或大于号报错的方法,我提供案列的是Oracle的分页查询SQL,如果大家分不清MySQL和Oracle的分页的话可以参考这篇文章:https://www.prettywordpress.com/back-end/development-faq/mysql-oracle-paging.html 。如果你喜欢这篇文章的话可以多多关注本网站,吃饭用大碗的程序猿会每天定时更新IT技术分享噢~
说:来学习一下,应该用得上