登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
MyBatis XML 里<![CDATA[ ]]>的使用
MyBatis XML 里<![CDATA[ ]]>的使用
[ 复制链接 ]
这帜
2026-2-12 02:50:00
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
今天我们来聊聊 MyBatis XML 文件里的 ,我依稀记得我第一次看到 ,心想,这是个啥啊?
首先我们要明确:
不是 MyBatis 的专属语法
,而是 XML 的原生语法(全称 Character Data,字符数据)。
XML 解析器
对某些特殊字符(比如
、&、'、"
等)进行解析的时候,可能会将这些特殊字符
误判
,比如 将 <strong> 的核心作用:
将包裹的内容标记为 "纯文本"
,XML 解析器会跳过对其中内容的语法解析,直接
原样保留
,从而避免特殊字符与 XML 语法的冲突,保证 MyBatis 最终拿到的 SQL 是我们预期的样子。
我们除了可以使用 ,也可以使用
转义字符
。
常用的
转义字符对照
:
< → <
> → >
& → &
" → "
' → '
注意结尾的
;
需要留着。
错误写法
:
<select id="getUserByAge" resultType="User">
<select id="getUserByAge" resultType="User">
<select id="getUserByAge" resultType="User">
SELECT * FROM user WHERE <![CDATA[ age < #{age} ]]>
</select>age < #{age}
</select>
</select>
复制代码
使用 转义 写法
:
<select id="getUserByAge" resultType="User">
<select id="getUserByAge" resultType="User">
<select id="getUserByAge" resultType="User">
SELECT * FROM user WHERE <![CDATA[ age < #{age} ]]>
</select>age < #{age}
</select>
</select>
复制代码
使用 CDATA 写法
:
<select id="getUserByAge" resultType="User">
SELECT * FROM user WHERE <![CDATA[ age < #{age} ]]>
</select>
复制代码
是不是使用
CDATA
的可读性要高很多,所以推荐使用
CDATA
,尤其是复杂SQL。
我们看个不是很复杂的SQL。
复杂SQL 转义 写法
:
<select id="getUserByAge" resultType="User">
SELECT * FROM user WHERE <![CDATA[ age < #{age} ]]>
</select>(age < #{age} OR salary > #{salary}) AND (create_time gt;= #{startTime} OR update_time lt;= #{endTime})
复制代码
复杂SQL CDATA 写法
:
<select id="getUserBySpec" resultType="User">
SELECT * FROM user
<![CDATA[
WHERE (age < #{age} OR salary > #{salary})
AND (create_time >= #{startTime} OR update_time <= #{endTime})
]]>
</select>
复制代码
MyBatis 高版本
对部分特殊字符做了兼容,比如直接写
>
可能不报错了。这是 "宽松解析",跨环境(比如不同 XML 解析器、不同数据库驱动等)仍有可能出问题,
推荐始终用 CDATA 保证兼容性
。
是 MyBatis 中处理 SQL 语句与 XML 语法冲突的安全屏障。对包含
特殊字符
的 SQL 片段进行最小范围的
CDATA 包裹
,既保证了安全,又确保了 MyBatis 动态 SQL 功能的完整性。
手执烟火以谋生,心怀诗意以谋爱。-- 烟沙九洲
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
MyBatis
XML
CDATA
使用
相关帖子
使用 C++ 模拟 ShaderLanguage 的 swizzle
使用 C++ 模拟 ShaderLanguage 的 swizzle
Go - Zerolog使用入门
【赵渝强老师】使用TiSpark在Spark中访问TiDB
【赵渝强老师】使用TiSpark在Spark中访问TiDB
【赵渝强老师】使用TiSpark在Spark中访问TiDB
MyBatis-plus拓展之字段类型处理器、自动填充和乐观锁等(完结)
用Mac的朋友们,你们都在使用Homebrew了吗
使用程序化的流程让智能体工作
MySQL不推荐使用UUID等字符串做主键
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
使用 C++ 模拟 ShaderLanguage 的 swizzle
0
25
喳谍
2026-03-10
业界
使用 C++ 模拟 ShaderLanguage 的 swizzle
3
514
届表
2026-03-10
业界
Go - Zerolog使用入门
0
1019
仰翡邸
2026-03-11
业界
【赵渝强老师】使用TiSpark在Spark中访问TiDB
1
395
撷监芝
2026-03-11
业界
【赵渝强老师】使用TiSpark在Spark中访问TiDB
0
353
嗳诿
2026-03-11
业界
【赵渝强老师】使用TiSpark在Spark中访问TiDB
1
840
能氐吨
2026-03-11
业界
MyBatis-plus拓展之字段类型处理器、自动填充和乐观锁等(完结)
0
472
赖琳芳
2026-03-12
业界
用Mac的朋友们,你们都在使用Homebrew了吗
0
668
嘀荼酴
2026-03-12
安全
使用程序化的流程让智能体工作
0
19
煞赶峙
2026-03-13
业界
MySQL不推荐使用UUID等字符串做主键
0
597
司寇涵涵
2026-03-15
回复
(8)
二艰糖
2026-2-13 22:00:56
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,辛苦了
啖曼烟
2026-2-19 13:42:46
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
喜欢鼓捣这些软件,现在用得少,谢谢分享!
诘琅
2026-2-22 08:55:24
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
懂技术并乐意极积无私分享的人越来越少。珍惜
于映雪
2026-2-23 23:41:20
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
梨恐
2026-3-8 10:17:28
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
过来提前占个楼
睁扼妤
2026-3-11 11:01:00
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
懂技术并乐意极积无私分享的人越来越少。珍惜
翁谌缜
7 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
yyds。多谢分享
讲怔
7 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
这帜
7 天前
关注
0
粉丝关注
26
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
韶又彤
9912
6
宋子
9878
7
荪俗
9016
8
闰咄阅
9995
9
刎唇
9995
10
俞瑛瑶
10000
查看更多
今日好文热榜
983
在AI的世界里,做一个真实的人
105
Qwen3.5 0.8b老电脑小试牛刀
614
Linux全网备份项目与NFS存储服务实战全攻略
724
在星火交汇处,我点亮了一盏灯——兼答“为
790
vue甘特图 vxe-gantt 如何实现双击连接线自
918
vue表格vxe-table如何获取拖拽后的行序号
840
鹅厂面试:SELECT * 一定导致索引失效
960
SQL Server安装避坑:这8个奇葩报错你遇到
273
openclaw的三大高危漏洞之下,还敢“AI养虾
876
浅谈两大算法模型评估指标
785
OpenClaw 国产平替 EasyClaw 全栈实操指南
793
时序数据库 IoTDB 邀你共探工业数智化技术
680
【OpenClaw 源码解析】你的 AI 助手每次都
776
基于深度学习的大棚黄瓜检测系统演示与介绍
863
工业物联网实时分析的“秒级”革命:拆解
594
AI元人文:伦理中间件——人机共生的“算法
287
YOLOv12/v11/v8/v5模型+Django+web+训练代
386
【GUI-Agent】阶跃星辰 GUI-MCP 解读---(2)
554
第二天
677
90%前端面试必问的12个JS核心,搞懂这些直