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标签内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 修改若依框架Token的过期时间问题

    修改若依框架Token的过期时间问题

    本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎支持脚本之家
    2025-02-02
  • dubbo服务无法注册到zookeeper的问题

    dubbo服务无法注册到zookeeper的问题

    Dubbo+Zookeeper项目服务注册失败,因模块创建时误选Web项目导致main下文件夹名为data,服务未被识别,更改为java后,服务正常注册,Zookeeper心跳及接口调用问题解决
    2025-07-07
  • Spring AI内置DeepSeek的详细步骤

    Spring AI内置DeepSeek的详细步骤

    Spring AI 最新快照版已经内置 DeepSeek 了,所以以后项目中对接 DeepSeek 就方便多了,但因为快照版会有很多 Bug,所以今天咱们就来看稳定版的 Spring AI 如何对接 DeepSeek 满血版,感兴趣的小伙伴跟着小编一起来看看吧
    2025-02-02
  • Java使用Spire.Doc实现Word转PDF的完整方案

    Java使用Spire.Doc实现Word转PDF的完整方案

    在OA系统开发、电子合同生成等场景中,Java开发者在处理文档自动化时最常遇到的痛点:生成的Word文档通过传统POI转换PDF时格式丢失,本文介绍的Spire.Doc for Java方案能保持原版格式,实现Word转PDF,文中通过代码讲解的非常详细,需要的朋友可以参考下
    2025-08-08
  • 在MyBatis-Plus中关闭SQL日志输出的方法

    在MyBatis-Plus中关闭SQL日志输出的方法

    在使用MyBatis-Plus开发Java应用程序时,随着项目的复杂性提升,SQL日志的输出可能会导致日志文件变得庞大,影响系统的性能和可维护性,本文将介绍如何在Spring Boot项目中关闭MyBatis-Plus的SQL日志输出,感兴趣的朋友一起看看吧
    2025-04-04
  • Java实现选择排序算法的实例教程

    Java实现选择排序算法的实例教程

    这篇文章主要介绍了Java实现选择排序算法的实例教程,选择排序的时间复杂度为О(n&sup2;),需要的朋友可以参考下
    2016-05-05
  • 聊聊Mybatis反射之ObjectWrapper的使用

    聊聊Mybatis反射之ObjectWrapper的使用

    本文主要介绍了Mybatis反射之ObjectWrapper的使用,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 深入解析Spring Boot 的SPI机制详情

    深入解析Spring Boot 的SPI机制详情

    这篇文章主要介绍了深入解析Spring Boot的SPI机制详情,SPI是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要用于框架中开发,更多相关介绍,感兴趣的小伙伴可以参考一下下面文章内容
    2022-08-08
  • MyBatis 中动态 SQL 的作用及执行原理解析

    MyBatis 中动态 SQL 的作用及执行原理解析

    MyBatis动态SQL通过一组XML标签实现多条件查询、批量操作和按需更新等复杂场景,提升可读性和可维护性,并配合#{}防止SQL注入,下面通过本文给大家介绍MyBatis 中动态 SQL 的作用及执行原理解析,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • SpringBoot集成redis实现共享存储session

    SpringBoot集成redis实现共享存储session

    这篇文章主要介绍了SpringBoot集成redis实现共享存储session的流程步骤,文中通过代码示例介绍的非常详细,并总结了一些常见的错误及解决方法,需要的朋友可以参考下
    2024-03-03

最新评论