当前位置: 首页 > news >正文

XML中的CDATA且mybatis中特殊字符转义

如果想看如果CDATA在mybatis的xml文件中使用的可以直接跳转。

CDATA

    • 1 XML中的CDATA
      • 1.1 为什么叫CDATA
      • 1.2 CDATA在XML中的语法
      • 1.3 CDATA在XML中的例子
      • 1.4 CDATA规则
    • 2 Mybatis中的CDATA
      • 2.1 Mybatis中使用XML转义序列转义
      • 2.2 Mybatis中使用CDATA转义
      • 2.3 mybatis中使用CDATA需注意的点

1 XML中的CDATA

1.1 为什么叫CDATA

CDATA很明显不是个单词,为什么叫CDATA,其实在英文里是Character Data的缩写,直译是字符数据。也就是我们不想让解析器解释为标记,而是想让解析器解释为字符也就是Character的数据,我们就用CDATA来处理。比如这五种特殊字符 <, >,&,"和’

1.2 CDATA在XML中的语法

<![CDATA[characters with markup
]]>

以上语法由三部分组成

  • CDATA的开始部分:以 <![CDATA[ 这九个定界符开始
  • CDATA的结束部分:以 ]]> 结束
  • CData也就是字符数据的部分:在开始和结束部分之间填入的所有字符,都会被XML处理器忽略,包括其中的特殊字符 (<、> 和 &)

1.3 CDATA在XML中的例子

<script><![CDATA[<message> Welcome to TutorialsPoint </message>]] >
</script >

上述的语句中,< message > 和 < /message > 之间的所有内容都被视为字符数据而不是标记。

1.4 CDATA规则

XML CDATA 需要遵循给定的规则

  • CDATA 不能在 XML 文档的任何位置包含字符串“]]>”。
  • CDATA 部分不允许嵌套。

2 Mybatis中的CDATA

都是CDATA,我为什么把两者分开来讲,是因为我觉得在Mybatis中使用CDATA和单纯的在XML中使用CDATA有区别。

2.1 Mybatis中使用XML转义序列转义

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

例如

<select id="userInfo" parameterType="java.util.HashMap" resultMap="user">   SELECT id,newTitle, newsDay FROM newsTable WHERE 1=1  AND  newsday &gt; #{startTime}AND  newsday &gt; #{endTime}  </select>  

2.2 Mybatis中使用CDATA转义

为了防止五种特殊字符 <, >,&,"和’ 被解析器转义,就用 <![CDATA[ ]]> 来包含这些字符。
例如:

<select id="userInfo" parameterType="java.util.HashMap" resultMap="user">   SELECT id,newTitle, newsDay FROM newsTable WHERE 1=1  AND  newsday <![CDATA[>=]]> #{startTime}AND newsday <![CDATA[<= ]]>#{endTime}  ]]>  </select> 

2.3 mybatis中使用CDATA需注意的点

上述两者转义方法中,大家都会推荐使用CDATA来进行转义,但是有一点需要大家注意。
在被CDATA包围的所有字符串不会被mybatis解析, 直接写入sql了,CDATA应该只用在特殊字符前后,不能用在< if > < foreach >等标签前面,否则可能会导致mybatis的查询失败。

http://www.lryc.cn/news/4104.html

相关文章:

  • 位运算 | 1356. 根据数字二进制下 1 的数目排序
  • React Hooks之useState详解
  • 选购交换机的参数依据和主要的参数指标详解
  • Connext DDS属性配置参考大全(1)
  • Docker安全
  • 刷题记录:牛客NC20279[SCOI2010]序列操作
  • Fluent Python 笔记 第 6 章 使用一等函数实现设计模式
  • windbg-应用层实时调试
  • 【Python语言基础】——Python NumPy 数组索引
  • MWORKS--MoHub介绍
  • Netty零拷贝机制
  • C++:提高篇: 栈-寄存器和函数状态:windows X86-64寄存器介绍
  • MyBatis-Plus入门案例
  • 适用于 Windows 11/10/8/7 的 10 大数据恢复软件分享
  • 在线支付系列【23】支付宝支付接入指南
  • linux系统常用命令
  • 面试(十一)new与delete(整理) 及 内存泄露
  • 2D图像处理:2D ShapingMatching_缩放_旋转_ICP_显示ROI
  • (考研湖科大教书匠计算机网络)第四章网络层-第一、二节:网络层概述及其提供的服务
  • 概论_第8章_假设检验的基本步骤__假设检验的类型
  • SpringMVC--简介和入门案例
  • Cmake入门02-检测环境(笔记)
  • Android JNI C++读写本地文件
  • 图形化深度学习开发平台PaddleStudio(代码开源)
  • 【力扣-LeetCode】1138. 字母板上的路径-C++题解
  • 基于Java+SpringBoot+Vue前后端分离酒店管理系统设计与实现
  • 【软考系统架构设计师】2022下综合知识历年真题
  • 【计组】理解Disruptor--《计算机组成原理》(十五)
  • Windows11 安装Apache24全过程
  • 1302机器翻译(队列)