Mybatis日期类型的关系判断

进行时间段的查询时,在mapper文件中直接使用">","<"等关系运算符是无法解析的

<if test="executeStartDate != null and executeStartDate != ''">
     and execute_time >= to_date(#{executeStartDate},'yyyy-MM-dd HH24:MI:SS')
</if>
<if test="executeEndDate != null and executeEndDate != ''">
     and execute_time <= to_date(#{executeEndDate},'yyyy-MM-dd HH24:MI:SS')
</if>

解决方法有两种,一种是使用"&gt;","&lt;"来表示大于和小于关系,这样,在解析时,这些特殊字符会被转义成所匹配的运算符

<if test="executeStartDate != null and executeStartDate != ''">
      and execute_time &gt;= to_date(#{executeStartDate},'yyyy-MM-dd HH24:MI:SS')
</if>
<if test="executeEndDate != null and executeEndDate != ''">
      and execute_time &lt;= to_date(#{executeEndDate},'yyyy-MM-dd HH24:MI:SS')
</if>

另一种是使用"<![CDATA[   ]]>"来嵌套不需要转义的内容

<if test="executeStartDate != null and executeStartDate != ''">
     and execute_time <![CDATA[>=]]> to_date(#{executeStartDate},'yyyy-MM-dd HH24:MI:SS')
</if>
<if test="executeEndDate != null and executeEndDate != ''">
     and execute_time <![CDATA[<=]]> to_date(#{executeEndDate},'yyyy-MM-dd HH24:MI:SS')
</if>
原文地址:https://www.cnblogs.com/zjfjava/p/9180003.html