最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis?XML?里<![CDATA[?]]>的使用示例詳解

 更新時(shí)間:2026年02月12日 08:53:21   作者:煙沙九洲  
<![CDATA[ ]]>是 MyBatis中處理SQL語(yǔ)句與XML語(yǔ)法沖突的安全屏障,本文給大家介紹MyBatis XML里<![CDATA[?]]>的使用,感興趣的朋友跟隨小編一起看看吧

今天我們來(lái)聊聊 MyBatis XML 文件里的 <![CDATA[ ]]> ,我依稀記得我第一次看到 <![CDATA[ ]]>,心想,這是個(gè)啥啊?

首先我們要明確:<![CDATA[ ]]>  不是 MyBatis 的專(zhuān)屬語(yǔ)法,而是 XML 的原生語(yǔ)法(全稱(chēng) Character Data,字符數(shù)據(jù))。

XML 解析器 對(duì)某些特殊字符(比如 <、>、&、'、" 等)進(jìn)行解析的時(shí)候,可能會(huì)將這些特殊字符 誤判,比如 將 < 識(shí)別為 XML 標(biāo)簽的開(kāi)始,等等。

<![CDATA[ ]]> 的核心作用:將包裹的內(nèi)容標(biāo)記為 "純文本",XML 解析器會(huì)跳過(guò)對(duì)其中內(nèi)容的語(yǔ)法解析,直接 原樣保留,從而避免特殊字符與 XML 語(yǔ)法的沖突,保證 MyBatis 最終拿到的 SQL 是我們預(yù)期的樣子。

我們除了可以使用 <![CDATA[ ]]>,也可以使用 轉(zhuǎn)義字符

常用的 轉(zhuǎn)義字符對(duì)照

  • < → &lt;
  • > → &gt;
  • & → &amp;
  • " → &quot;
  • ' → &apos;

注意結(jié)尾的 需要留著。

錯(cuò)誤寫(xiě)法

<!-- XML解析器會(huì)把 < 識(shí)別為標(biāo)簽開(kāi)始,直接報(bào)錯(cuò) -->
<select id="getUserByAge" resultType="User">
    SELECT * FROM user WHERE age < #{age}
</select>

使用 轉(zhuǎn)義 寫(xiě)法

<select id="getUserByAge" resultType="User">
    SELECT * FROM user WHERE age < #{age}
</select>

使用 CDATA 寫(xiě)法

<select id="getUserByAge" resultType="User">
    SELECT * FROM user WHERE <![CDATA[ age < #{age} ]]>
</select>

是不是使用 CDATA 的可讀性要高很多,所以推薦使用 CDATA,尤其是復(fù)雜SQL。

我們看個(gè)不是很復(fù)雜的SQL。

復(fù)雜SQL 轉(zhuǎn)義 寫(xiě)法

<select id="getUserBySpec" resultType="User">
    SELECT * FROM user WHERE (age &lt; #{age} OR salary &gt; #{salary})
    AND (create_time gt;= #{startTime} OR update_time lt;= #{endTime})
</select>

復(fù)雜SQL CDATA 寫(xiě)法

<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 高版本 對(duì)部分特殊字符做了兼容,比如直接寫(xiě) 可能不報(bào)錯(cuò)了。這是 "寬松解析",跨環(huán)境(比如不同 XML 解析器、不同數(shù)據(jù)庫(kù)驅(qū)動(dòng)等)仍有可能出問(wèn)題,推薦始終用 CDATA 保證兼容性

<![CDATA[ ]]> 是 MyBatis 中處理 SQL 語(yǔ)句與 XML 語(yǔ)法沖突的安全屏障。對(duì)包含 特殊字符 的 SQL 片段進(jìn)行最小范圍的 CDATA 包裹,既保證了安全,又確保了 MyBatis 動(dòng)態(tài) SQL 功能的完整性。

到此這篇關(guān)于MyBatis XML 里<![CDATA[ ]]>的使用的文章就介紹到這了,更多相關(guān)MyBatis XML 里<![CDATA[ ]]>的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis實(shí)現(xiàn)自定義MyBatis插件的流程詳解

    MyBatis實(shí)現(xiàn)自定義MyBatis插件的流程詳解

    MyBatis的一個(gè)重要的特點(diǎn)就是插件機(jī)制,使得MyBatis的具備較強(qiáng)的擴(kuò)展性,我們可以根據(jù)MyBatis的插件機(jī)制實(shí)現(xiàn)自己的個(gè)性化業(yè)務(wù)需求,本文給大家介紹了MyBatis實(shí)現(xiàn)自定義MyBatis插件的流程,需要的朋友可以參考下
    2024-12-12
  • java map中相同的key保存多個(gè)value值方式

    java map中相同的key保存多個(gè)value值方式

    這篇文章主要介紹了java map中相同的key保存多個(gè)value值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • @OneToMany查詢(xún)陷入循環(huán)引用的解決方案

    @OneToMany查詢(xún)陷入循環(huán)引用的解決方案

    這篇文章主要介紹了@OneToMany查詢(xún)陷入循環(huán)引用的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot整合minio服務(wù)的示例代碼

    SpringBoot整合minio服務(wù)的示例代碼

    本文主要介紹了SpringBoot整合minio服務(wù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • IDEA快速創(chuàng)建SpringBoot項(xiàng)目的圖文詳解與避坑指南

    IDEA快速創(chuàng)建SpringBoot項(xiàng)目的圖文詳解與避坑指南

    IntelliJ IDEA作為Java開(kāi)發(fā)者的?首選IDE?,深度集成Spring Boot支持,可一鍵生成項(xiàng)目骨架和智能配置依賴(lài),下面我們就來(lái)看看如何零基礎(chǔ)?通過(guò)IDEA創(chuàng)建Spring Boot項(xiàng)目吧
    2025-05-05
  • 在SpringBoot中整合數(shù)據(jù)源的示例詳解

    在SpringBoot中整合數(shù)據(jù)源的示例詳解

    這篇文章主要介紹了在SpringBoot中如何整合數(shù)據(jù)源,本文介紹了如何在SpringBoot項(xiàng)目中整合常見(jiàn)的數(shù)據(jù)源,包括JdbcTemplate、MyBatis和JPA,并探討了如何配置和使用多數(shù)據(jù)源,需要的朋友可以參考下
    2023-06-06
  • Netty 輕松實(shí)現(xiàn)文件上傳功能

    Netty 輕松實(shí)現(xiàn)文件上傳功能

    今天我們來(lái)完成一個(gè)使用netty進(jìn)行文件傳輸?shù)娜蝿?wù)。在實(shí)際項(xiàng)目中,文件傳輸通常采用FTP或者HTTP附件的方式,對(duì)Netty 文件上傳功能感興趣的朋友一起看看吧
    2021-07-07
  • idea打開(kāi)和讀取*properties文件亂碼的解決

    idea打開(kāi)和讀取*properties文件亂碼的解決

    本文主要介紹了idea打開(kāi)和讀取*properties文件亂碼的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Java基于外觀(guān)模式實(shí)現(xiàn)美食天下食譜功能實(shí)例詳解

    Java基于外觀(guān)模式實(shí)現(xiàn)美食天下食譜功能實(shí)例詳解

    這篇文章主要介紹了Java基于外觀(guān)模式實(shí)現(xiàn)美食天下食譜功能,較為詳細(xì)的講述了外觀(guān)模式的概念、原理并結(jié)合實(shí)例形似詳細(xì)分析了Java基于外觀(guān)模式實(shí)現(xiàn)美食天下食譜功能的具體操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-05-05
  • Spring Security使用單點(diǎn)登錄的權(quán)限功能

    Spring Security使用單點(diǎn)登錄的權(quán)限功能

    本文主要介紹了Spring Security使用單點(diǎn)登錄的權(quán)限功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評(píng)論

永顺县| 西乌珠穆沁旗| 武川县| 阜康市| 太康县| 周至县| 商河县| 宣汉县| 柯坪县| 金门县| 康马县| 日土县| 永宁县| 海安县| 改则县| 永善县| 茂名市| 和静县| 阿勒泰市| 乌兰浩特市| 山西省| 义马市| 南城县| 清河县| 南召县| 探索| 麟游县| 新宁县| 固阳县| 江都市| 武鸣县| 瓦房店市| 老河口市| 桐乡市| 新乡市| 安仁县| 剑河县| 聂拉木县| 石台县| 上栗县| 平江县|