在使用mybatis 时咱们sql是写在xml 映射文件中,若是写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但咱们不但愿他被转义,因此咱们要使用<![CDATA[ ]]>来解决。java
<![CDATA[ ]]> 是什么,这是XML语法。在CDATA内部的全部内容都会被解析器忽略。sql
若是文本包含了不少的"<"字符 <=和"&"字符——就象程序代码同样,那么最好把他们都放到CDATA部件中。mybatis
可是有个问题那就是 <if test=""> </if> <where> </where> <choose> </choose> <trim> </trim> 等这些标签都不会被解析,因此咱们只把有特殊字符的语句放在 <![CDATA[ ]]> 尽可能缩小 <![CDATA[ ]]> 的范围。ide
实例以下:ui
<select id="allUserInfo" parameterType="java.util.HashMap" resultMap="userInfo1"> <![CDATA[ SELECT newsEdit,newsId, newstitle FROM shoppingGuide WHERE 1=1 AND newsday > #{startTime} AND newsday <= #{endTime} ]]> <if test="etidName!=''"> AND newsEdit=#{etidName} </if> </select>
由于这里有 ">" "<=" 特殊字符因此要使用 <![CDATA[ ]]> 来注释,可是有<if> 标签,因此把<if>等 放外面code