最近在看博客时,发现有人使用了<![CDATA[ ]]>这样一个标签包住Mapper中的sql语句,不清除是什么意思,后来查了一下,这个标签是直译sql的意思。
<![CDATA[ ]]>是xml语法,包含在其中的文本不会被xml语法解析,比如sql中的"<"和">",不会被解析为xml的尖括号,而是不转义的字符串。
<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>等 放外面
注:经过测试,mybatis已经基本克服了sql转义的问题,这个标签可以谨慎使用。
网友评论