<select id="getHistoryDataByDate" parameterType="java.util.HashMap" resultType="java.util.HashMap"> select * from ${tableName} <where> <if test="dStart!=null"> <![CDATA[ and DATE_FORMAT(time, '%Y-%m-%d %H:%T:%s') >= DATE_FORMAT(#{dStart}, '%Y-%m-%d %H:%T:%s') ]]> </if> <if test="dEnd!=null"> <![CDATA[ and DATE_FORMAT(time, '%Y-%m-%d %H:%T:%s') <= DATE_FORMAT(#{dEnd} , '%Y-%m-%d %H:%T:%s') ]]> </if> </where> order by time desc </select>
注意使用if test 語句對傳入的起止判斷為如下會報錯:java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
<if test="dStart!=null and dStart!=''"> <![CDATA[ and DATE_FORMAT(time, '%Y-%m-%d %H:%T:%s')>= DATE_FORMAT(#{dStart}, '%Y-%m-%d %H:%T:%s') ]]> </if> <if test="dEnd!=null and dEnd!=''"> <![CDATA[ and DATE_FORMAT(time, '%Y-%m-%d %H:%T:%s') <= DATE_FORMAT(#{dEnd}, '%Y-%m-%d %H:%T:%s') ]]> </if>
原文鏈接:https://blog.csdn.net/edison_03/article/details/77413099