Mybatis中的<![CDATA[]]>标签在判断日期场景中的使用
2023-09-27 14:29:03 时间
背景
在使用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>
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
首发链接:https://www.cnblogs.com/lingyejun/p/17347790.html
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=26x714yb3cb3
相关文章
- mysql中如何查看某个日期所在的周一是几号?某个日期所在的一周开始时间是几号?
- Java 8 时间日期
- Asp.Net和LinQ中把日期转换为一定格式的字符串的方法!(最简单的一种实例)
- 计算两个日期相隔的天数
- Lumen Carbon 日期及时间处理包
- CentOS7 日期时间设置
- js 获取 本周、上周、本月、上月、本季度、上季度的开始结束日期
- SwiftUI 动画之标签云进入退出动画效果中文日期(教程含源码)
- Flutter 修改iOS风格日期选择器CupertinoDatePicker的年月日排序方式
- mybatis 日期查询datetime
- NOIP 2016 回文日期
- 如何使用 apache的POI读取日期格式数据
- 常用方法 读取 Excel的单位格 为 日期格式 的数据