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

 更新时间:2026年03月08日 09:23:54   作者:小恒恒  
本文主要介绍了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标签内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • SpringBoot添加日志链TraceId方式

    SpringBoot添加日志链TraceId方式

    配置SpringBoot日志TraceId,利用MDC和拦截器注入traceid变量,通过logback-spring.xml设置,使%X{traceid}可获取,提升问题排查效率
    2025-08-08
  • JAVA异常信息Exception e及e的相关方法解读

    JAVA异常信息Exception e及e的相关方法解读

    这篇文章主要介绍了JAVA异常信息Exception e及e的相关方法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 详解Spring的autowire-candidate设计

    详解Spring的autowire-candidate设计

    现在的Spring应用通常都是基于注解开发,但是对Spring感兴趣的同学可以借助Spring早期基于Xml配置的各种运用来加深对Spring框架内部的理解和体会Spring框架的设计之妙。这篇文章我们就来谈谈Xml配置之default-autowire-candidates
    2021-06-06
  • Springboot实现验证码登录

    Springboot实现验证码登录

    这篇文章主要为大家详细介绍了Springboot实现验证码登录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 关于Integer.parseInt()方法的使用

    关于Integer.parseInt()方法的使用

    这篇文章主要介绍了关于Integer.parseInt()方法的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 一起来了解Java的File类和IO流

    一起来了解Java的File类和IO流

    这篇文章主要为大家详细介绍了Java File类和IO流,在Java学习中,file类与io流是非常重要的部分,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 深度剖析Java成员变量、局部变量和静态变量的创建和回收时机

    深度剖析Java成员变量、局部变量和静态变量的创建和回收时机

    这篇文章主要介绍了深度剖析Java成员变量、局部变量和静态变量的创建和回收时机,成员变量是定义在类中的变量,每个类的实例都会拥有自己的成员变量。它们的生命周期与对象的创建和销毁相对应,下面我将详细介绍它们的特点和生命周期,需要的朋友可以参考下
    2023-07-07
  • Spring笔记-@Order注解和Ordered接口解析

    Spring笔记-@Order注解和Ordered接口解析

    这篇文章主要介绍了Spring笔记-@Order注解和Ordered接口,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 详解Spring Boot下Druid连接池的使用配置分析

    详解Spring Boot下Druid连接池的使用配置分析

    本篇文章主要介绍了详解Spring Boot下Druid连接池的使用配置分析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 一文解读java.nio.ByteBuffer

    一文解读java.nio.ByteBuffer

    这篇文章主要介绍了java.nio.ByteBuffer的用法解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论