在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义。
如大于号>会被转义为>转义后的可读性不是很直观,如果想让其看起来更加直观可读性更强的话,则需要使用<![CDATA[ ]]>
来圈起来不被转义的符号以此来解决这个问题。
常见的转义字符,和它们表述的场景:
转义字符 | 原字符 | 说明 |
---|---|---|
< | < | 小于 |
> | '>' | 大于 |
& | & | 和号 |
' | ' | 单引号 |
" | " | 双引号 |
<![CDATA[ ]]>
是什么<![CDATA[ ]]>
是什么,这是XML语法。在CDATA内部的所有内容都会被解析器忽略。
术语 CDATA 是不应该由 XML 解析器解析的文本数据。 像 “<” 和 “&” 字符在 XML 元素中都是非法的。 “<” 会产生错误,因为解析器会把该字符解释为新元素的开始。 “&” 会产生错误,因为解析器会把该字符解释为字符实体的开始。
但是有个问题那就是 等这些标签都不会被解析,所以我们只把有特殊字符的语句放在 <![CDATA[ ]]> 尽量缩小 <![CDATA[ ]]> 的范围。
实例如下:
时间字符串比较如:
String createTime = "2020-03-12 00:00:00"
<if test="createTime != null and createTime != ''">
<![CDATA[ and a.create_time >= #{createTime } ]]>
</if>
利用时间函数:
<if test="createTime != null and createTime != ''">
<![CDATA[
and a.create_time >= str_to_date(#{createTime,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')
]]>
</if>
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有