在mybatis中sql是写在xml映射文件中的,如果sql中有一些特殊字符的话,在解析xml文件的时候就会被转义,如若不希望被转义,那该怎么办呢?
在 XML 元素中,"<" 和 “&” 是非法的。
“<” 会产生错误,因为解析器会把该字符解释为新元素的开始。
“&” 也会产生错误,因为解析器会把该字符解释为字符实体的开始。
在mybatis中<=不能使用,需要使用上面任意一种方法转义,但是>=可以使用!
使用特殊转义字符
例如,>=开始日期 并且<=结束日期
< < 小于
> > 大于
& & 和号
' ' 省略号
" " 引号
<if test="searchTimeBegin != null and searchTimeBegin != ''">
AND tcci.consume_time >= CONCAT(#{searchTimeBegin},' 00:00:00')
</if>
<if test="searchTimeEnd != null and searchTimeEnd != ''">
AND tcci.consume_time <= CONCAT(#{searchTimeEnd},' 23:59:59')
</if>
**
mybatis什么情况下必须要使用${}格式?
**
在涉及到动态表名和列名时,必须使用${xxxxx}进行注入。
比如order by语句。首先我们采用 #{xxxxx}格式,一条降序的查询语句~
order by:
因为#是按string类型拼接,就成为:order by ‘cloumn’ ‘desc’。
使用$ 则为:order by cloumn desc。
解决这个类${xxxx}的防SQL的方案:java判断一下输入的参数的长度是否正常。