mybatis处理特殊字符

问题

我在xml写了一个批量插入的语句,

其中有部分参数的值中,包含逗号,括号等特殊字符 ,  ()   <>  /

导致语句生成后有特殊字符的参数值没有被自动加上引号

<insert id="insertVToolTlsCipherSuitsInfoList" parameterType="java.util.ArrayList">
        insert into v_tool_tls_cipher_suits_info
        values
        (iana_name,protocol,hex_code,tls_version,keyExchange_alg_type,keyExchange_alg_security,keyExchange_alg_risk,authentication_alg_type,authentication_alg_security,authentication_alg_risk,encryption_alg_type,encryption_alg_security,encryption_alg_risk,hash_alg_type,hash_alg_security,hash_alg_risk,release_number,release_link,security_level)
        <foreach collection="list" item="item" index="index" separator=",">
            (#{item.ianaName},#{item.protocol},#{item.hexCode},#{item.tlsVersion},#{item.keyexchangeAlgType},#{item.keyexchangeAlgSecurity},#{item.keyexchangeAlgRisk},#{item.authenticationAlgType},#{item.authenticationAlgSecurity},#{item.authenticationAlgRisk},#{item.encryptionAlgType},#{item.encryptionAlgSecurity},#{item.encryptionAlgRisk},#{item.hashAlgType},#{item.hashAlgSecurity},#{item.hashAlgRisk},#{item.releaseNumber},#{item.releaseLink},#{item.securityLevel})
        </foreach>
    </insert>

解决方案

添加 标签  

<![CDATA[  ]]>

用这个标签包裹,可以防止MyBatis在解析时把这些字符误认为是SQL的一部分。

最终代码

<insert id="insertVToolTlsCipherSuitsInfoList" parameterType="java.util.ArrayList">
    insert into v_tool_tls_cipher_suits_info
    (iana_name, protocol, hex_code, tls_version, keyExchange_alg_type, keyExchange_alg_security, keyExchange_alg_risk,
     authentication_alg_type, authentication_alg_security, authentication_alg_risk, encryption_alg_type,
     encryption_alg_security, encryption_alg_risk, hash_alg_type, hash_alg_security, hash_alg_risk, release_number,
     release_link, security_level)
    values
    <foreach collection="list" item="item" index="index" separator=",">
      (
        <![CDATA[#{item.ianaName}]]>, 
        <![CDATA[#{item.protocol}]]>, 
        <![CDATA[#{item.hexCode}]]>, 
        <![CDATA[#{item.tlsVersion}]]>, 
        <![CDATA[#{item.keyexchangeAlgType}]]>, 
        <![CDATA[#{item.keyexchangeAlgSecurity}]]>, 
        <![CDATA[#{item.keyexchangeAlgRisk}]]>, 
        <![CDATA[#{item.authenticationAlgType}]]>, 
        <![CDATA[#{item.authenticationAlgSecurity}]]>, 
        <![CDATA[#{item.authenticationAlgRisk}]]>, 
        <![CDATA[#{item.encryptionAlgType}]]>, 
        <![CDATA[#{item.encryptionAlgSecurity}]]>, 
        <![CDATA[#{item.encryptionAlgRisk}]]>, 
        <![CDATA[#{item.hashAlgType}]]>, 
        <![CDATA[#{item.hashAlgSecurity}]]>, 
        <![CDATA[#{item.hashAlgRisk}]]>, 
        <![CDATA[#{item.releaseNumber}]]>, 
        <![CDATA[#{item.releaseLink}]]>, 
        <![CDATA[#{item.securityLevel}]]>
      )
    </foreach>
</insert>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值