mybatis 中的CDATA用法及说明

mybatis映射文件中,特殊字符如"<"、">"等直接写会导致解析错误。通过使用CDATA,可以避免字符转义,确保SQL语句的正确执行。CDATA内部的内容在解析时被忽略,适合包含大量程序代码的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

平时在mybatis的映射文件写sql时,很多时候都需要写一些特殊的字符。例如:"<" 字符 “>” 字符 “>=” 字符 “<=” 字符,但是在xml文件中并不能直接写上述列举的字符,否则就会报错。

因为在解析xml文件时候,我们如果书写了特殊字符,在没有特殊处理的情况下。这些字符会被转义,但我们并不希望它被转义,所以我们要使用<![CDATA[ ]]>来解决。在CDATA内部的所有内容都会被解析器忽略。所以,当我们在xml文本中包含了很多的"<" 字符 “<=” 和 “&” 字符—就像程序代码一样,那么最好把他们都放到CDATA部件中。

案例

<update id="updateTblCostVisualOrgnameInterface" parameterType="TblCostVisualOrgnameInterface">
        update tbl_cost_visual_orgname_interface
        <trim prefix="SET" suffixOverrides=",">
            <if test="orgName != null">org_name = #{orgName},</if>
            <if test="orgCode != null">org_code = #{orgCode},</if>
<!--            <if test="roleA != null">role_a = #{roleA},</if>-->
<!--            <if test="roleB != null">role_b = #{roleB},</if>-->
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="nameA != null"> <![CDATA[ role_a = JSON_SET(role_a, '$[0].name', #{nameA}), ]]></if>
            <if test="OAA != null"><![CDATA[role_a = JSON_SET(role_a, '$[0].OA', #{OAA}), ]]></if>
            <if test="phoneA != null"><![CDATA[role_a = JSON_SET(role_a, '$[0].phone', #{phoneA}), ]]></if>
            <if test="deptA != null"><![CDATA[role_a = JSON_SET(role_a, '$[0].dept', #{deptA}) ]]></if>
        </trim>
        where id = #{id}
    </update>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值