java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Mybatis使用CDATA标签

Mybatis XML文件中使用CDATA标签的实现

作者:小恒恒

本文主要介绍了Mybatis XML文件中使用CDATA标签,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

0.背景

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

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

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

我们举个例子:

            <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 > #{startTimeLong}
            </if>

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

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

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

4.总结讨论

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

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

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

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

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

总结一下:

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

到此这篇关于Mybatis XML文件中使用CDATA标签的实现的文章就介绍到这了,更多相关Mybatis使用CDATA标签内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文