使用MyBatis编写SQL时<号报错的问题

使用MyBatis编写SQL时使用符号报错的问题

一般我们写sql语句都会有一些条件判断语句,如下

		select *
        from mmall_order
        where status = '1'
        and create_time <= '2020.10.05'
        order by create_time desc

但是在使用MyBatis时在XML文件中这样写是要报错的,如下

    <select id="selectOrderStatusByCreateTime" resultMap="BaseResultMap" parameterType="map">
        select
        <include refid="Base_Column_List"></include>
        from mmall_order
        where status = #{status}
        and create_time <= #{date}
        order by create_time desc
    </select>

这样写看似没有问题,实际上是有错的,xml里写<,>,!=号都是无法解析的,需要转移。
报错如下
在这里插入图片描述

解决方法

在使用这些符号时使用一个转移操作,即在外围包裹上<![CDATA[]]
如下

    <select id="selectOrderStatusByCreateTime" resultMap="BaseResultMap" parameterType="map">
        select
        <include refid="Base_Column_List"></include>
        from mmall_order
        where status = #{status}
        <![CDATA[
        and create_time <= #{date}
        ]]>
        order by create_time desc
    </select>

这样就不会报错了

原理

在XML文件中,被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”。<![CDATA[]]>表示xml解析器忽略解析,所以更快。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值