目录
一 问题描述
mybatis框架是java web开发必备的框架,很多mybatis新手写代码的时候,需要在sql中使用到大于等于,这时候如果像sql中一样直接使用了>、<、>=、<=,在运行的时候于是就出现了一些意想不到的错误,为什么会出现这种情况呢?其实,跟sql注入的道理一样,sql中的>、<、>=、<=与mybatis mapper xml里面的标签符号【"<","<"】发生了冲突,导致解析过程中出现问题。
二 方案一
mybatis 中 SQL 写在mapper.xml文件中,而xml解析 < 、>、<=、>= 时会出错,这时应该使用转义写法
| 字段 | 符号 | 说明 |
|---|---|---|
| < | < | 小于号 |
| > | > | 大于号 |
| & | & | 和 |
| ' | ' | 单引号 |
| " | " | 双引号 |
三 方案二
<![CDATA[ sql语句 ]]>
示例:
num <![CDATA[ >= ]]> #{num}
在Mybatis中,使用大于、小于等符号(>,<)在XML映射文件里会导致解析错误,因为这些符号与XML的标签冲突。为避免此问题,可以使用转义字符,如&lt;、amp;gt;,或者将SQL语句包裹在CDATA块内,如<![CDATA[sql语句]]>。这样可以确保SQL条件正确执行,防止解析错误。
3110

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



