发布于 3年前

mybatis在mapper.xml中怎么处理大于、小于、不等于号

第一种方法:

使用转义字符

大于号         >     >
大于等于号     >=    >=
小于号         <   &lt; 
小于等于号     <=     &lt;=
与            &    &amp;
双引号         "     &quot;
单引号         '     &apos;

sql如下:

 <if test="beginTimeStr != null">
    and file.created_at &gt;= '${beginTimeStr}'
</if>
<if test="endTimeStr != null">
    and file.created_at &lt;= '${endTimeStr}'
</if>

例如常见的时间比较:

错误写法

<select id="select" parameterType="xxx" resultMap="xxx">  
    select
        distinct  
        <include refid="Base_Column_List" />  
    from xxx  
    <where>  
        <if test="createDate != null">  
            create_date <= #{createDate}  
        </if>  
    </where>
</select>

正确写法

 <select id="select" parameterType="xxx" resultMap="xxx">  
    select  
        distinct  
        <include refid="Base_Column_List" />  
    from xxx  
    <where>  
        <if test="createDate != null">  
            create_date &lt;= #{createDate}  
        </if>  
    </where>  
</select>

第二种方法:

使用<![CDATA[ ]]>

因为xml格式遇到这种格式会把方括号里的内容原样输出,不进行解析,如:

大于等于    <![CDATA[ >= ]]>
小于等于     <![CDATA[ <= ]]>

sql如下:

 <if test="beginTimeStr != null">
    <![CDATA[ and file.created_at >= '${beginTimeStr}' ]]>
</if>
<if test="endTimeStr != null">
    <![CDATA[ and file.created_at <= '${endTimeStr}' ]]>
</if>
©2020 edoou.com   京ICP备16001874号-3