MyBatis XML中如何区分大于小于号在CDATA与HTML实体中的不同应用?
- 内容介绍
- 相关推荐
本文共计867个文字,预计阅读时间需要4分钟。
MyBatis 的 XML 映射文件本质上是标准 XML 文件,格式规范如下:
最简单、兼容性最好、也最不容易出错的做法就是老老实实用 HTML 实体:
代替 <code><-
>代替> -
&代替&(如果条件里还带&&)
比如:<where><if test="age > 18">AND age > 18</if></where>
CDATA 块能包住 SQL,但别乱用在 test 属性里
<![CDATA[ ... ]]> 确实能让 XML 解析器跳过内容校验,适合包裹大段含 </> 的 SQL 片段(比如内联视图、复杂子查询)。但它只对「元素内容」生效,对属性值完全无效。
立即学习“前端免费学习笔记(深入)”;
下面这段是错的,XML 解析直接失败:
<if test="<![CDATA[age > 18]]>">
因为 test 是属性,CDATA 在属性里不被识别,反而会把 <![CDATA[ 当成非法标记开头。
本文共计867个文字,预计阅读时间需要4分钟。
MyBatis 的 XML 映射文件本质上是标准 XML 文件,格式规范如下:
最简单、兼容性最好、也最不容易出错的做法就是老老实实用 HTML 实体:
代替 <code><-
>代替> -
&代替&(如果条件里还带&&)
比如:<where><if test="age > 18">AND age > 18</if></where>
CDATA 块能包住 SQL,但别乱用在 test 属性里
<![CDATA[ ... ]]> 确实能让 XML 解析器跳过内容校验,适合包裹大段含 </> 的 SQL 片段(比如内联视图、复杂子查询)。但它只对「元素内容」生效,对属性值完全无效。
立即学习“前端免费学习笔记(深入)”;
下面这段是错的,XML 解析直接失败:
<if test="<![CDATA[age > 18]]>">
因为 test 是属性,CDATA 在属性里不被识别,反而会把 <
