0.背景

  当下,使用MybatisXML文件书写复杂SQL,依然是一种主流的选择。那么,我们在书写SQL语句时,要时刻提醒自己,自己正在书写一个XML文件,XML文件对于一些特殊字符,是会进行解析的。就比如< >

1.使用 <![CDATA[]]>

CDATA,意为 character data,是标记语言SGMLXML,表示文档的特定部分是普通的字符数据,而不是非字符数据或有特定、限定结构的字符数据。

  我们举个例子:

            <if test="startTimeLong!=null"><![CDATA[and happen_time > #{startTimeLong}]]></if>

  这种方法很好,只是,我们需要手动敲入这个标签吗?不用的,我们就正常写语句,交给IDEA就可以了,当我们敲完判断条件后,按下Alt + Enter,就会弹出提示框,选择Convert text to CData就可以了。

2.<![CDATA[]]>转换成普通的text

  通常情况下,我们使用这个标签就能搞定一些情况,但是对于部分人来讲,他们会觉得混乱。那么转换后的文本,再使用Convert CData to text 就可以了。


  就可以得到我们想要的内容:

            <if test="startTimeLong!=null">and happen_time &gt; #{startTimeLong}</if>

  当然了,IDEA对于<支持得不好,所以没有使用<来做演示,遇到<的情况还得手动移动一下]]到句子末尾。

3.XML文件中的特殊字符的写法

特殊字符 转义字符
& &amp;
< &lt;
> &gt;
" &quot;
&apos;

4.总结讨论

  如果你是在写SQL,能够使用<![CDATA[]]>,那是最好,大部分情况下你都不需要想,直接套就行。

  若是自己输出XML文件时,情况就不同了,比如:

  CDATA节不能嵌套。如果文本中需要包含3字符序列]]>,需要用两个相邻的CDATA节表示它,如下例:

<![CDATA[]]]]><![CDATA[>]]>

  故,在自己进行XML文件输出时,应该抛弃此标签,避免一些奇怪的问题,而是使用字符串替换的方式,将特殊字符的转义字符替换过来。

  总结一下:


手写文件CDATA,输出文件用转义!

鸣谢

  • xml中的特殊字符

Mybatis XML文件中使用CDATA标签相关推荐

  1. 【项目经验】如果想在mapper.xml文件中的一个标签中写多条sql语句,则需要在jdbc的配置文件中稍做配置

    如果想在mapper.xml文件中的一个标签中写多条sql语句,则需要在jdbc的配置文件中稍做配置: url=jdbc:mysql://127.0.0.1:3306/airipo?useUnicod ...

  2. mybatis XML文件中特殊符号“大于”、“小于”、“大于等于”、“小于等于”,XML报错

    今天写代码时,启动时突然报了一个xml异常,于是就抽时间记录了一下这个bug的解决方案.         下面时bug:         Caused by: org.xml.sax.SAXParse ...

  3. pom.xml文件中的parent标签

    基本概念 maven的核心就算pom.xm,使用maven是为了更好地帮项目管理包依赖.如果要引入一个jar包,需要在pom文件中加上 <dependency><groupId> ...

  4. java mybatis XML文件中大于号小于号转义(转载)

    因为这个是xml文件不允许出现类似">"这样的字符 用了转义字符把>和<替换掉,然后就没有问题了. XML转义字符 字段 符号 说明 &lt ; < ...

  5. java mybatis XML文件中大于号小于号转义

    因为这个是xml文件不允许出现类似">"这样的字符 用了转义字符把>和<替换掉,然后就没有问题了. XML转义字符 字段 符号 说明 &lt ; < ...

  6. XML文件中的CDATA的使用.

    为什么80%的码农都做不了架构师?>>>    之前也了解过,但一直没去细究. W3C网站说是不让xml解析器来解析他.其实也没说错.只是就使用细节,具体如何使用,以及为什么要这样使 ...

  7. 在xml文件中使用typeAliases标签报错The content of element type “configuration“ must match “(properties?,setting

    typeAliases标签:为Java 类型设置一个短的名字/别名 这里的错误提示:(properties?,settings?,typeAliases?,typeHandlers?,objectFa ...

  8. mysql模糊查询xml_在userMapper.xml文件中模糊查询的常用的3种方法

    在userMapper.xml文件中新建映射sql的标签 select from users name like "%"#{name}"%" and phone ...

  9. web.xml文件中可以配置哪些内容?

    web.xml用于配置Web应用的相关信息,如:监听器(listener).过滤器(filter).Servlet.相关参数. 会话超时时间.错误页面等①配置Spring上下文加载监听器,加载Spri ...

最新文章

  1. WordPress首页调用QQ签名
  2. 用oracle存储过程取一张表里的数据放入其他表 游标取值
  3. 加速进军自动驾驶领域,福特计划推出自动驾驶出租车服务
  4. 资料汇总--java开发程序员必备技能
  5. webapi输出炜json_webapi转化为json格式
  6. 【Flink】解决Flink在测试环境无法保存checkpoint问题
  7. [NOIP2017 TG D2T2]宝藏(模拟退火)
  8. 第十一篇:Mysql系列
  9. 科技巨头极速进场 车路协同技术为何被热捧?
  10. 空间分析方法在计算机上的应用,常见的空间分析方法(很经典的总结)
  11. java dos攻击 异常_HashMap出现Hash DOS攻击的问题
  12. poj 1862 贪心
  13. Java实现 蓝桥杯VIP 算法提高 彩票
  14. 易基因 | 植物DNA甲基化专题 | NAR:拟南芥AtHDA6与着丝粒周围DNA甲基化关系研究
  15. OpenGL 栅格化
  16. Pubwin EP 正式版完整安装全程-数据备份
  17. 努比亚 更新服务器设置在哪个文件夹,努比亚nubia Z7 mini官方系统升级更新教程和方法...
  18. JDK下载及安装教程(很详细)
  19. 【逆向学习】花指令的去除
  20. 软件 黑苹果盒盖不休眠_怎么解决苹果电脑合盖自动休眠问题?

热门文章

  1. 抱怨零基础转岗项目经理难,你一定不知道这个捷径
  2. KD-Tree的构建及检索
  3. 【闲来无聊写个几个小特效——五角星,小光圈,探照灯】
  4. 2019蓝桥杯A组C++题目
  5. 2022-1024节日快乐,里程碑纪念
  6. pxe实现自动化部署安装高效批量网络装机
  7. 【车载以太网】【SOME/IP】(九)解读SOME/IP-SD服务发现协议
  8. 机器人 瓷砖墙面清洗_墙面瓷片很脏了,有什么办法清洗呀好烦哦...
  9. java线程休眠sleep函数_Java多线程中sleep()方法详解及面试题
  10. 印会河《中医基础理论》笔记——藏象学说