一般我们写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解析器忽略解析,所以更快。