問題產生?
今天在做Excel導出的時候,有個判斷一個狀態的字段,我的這個字段是int類型的,還有兩個時間類型,我在判斷的時候給的是Long類型的。
在測試的時候發現,不管怎么樣都不執行if條件里面的內容,代碼如下:
1 <select id="selectBusinessByHoutaiShenhe" resultMap="BaseResultMap" > 2 select 3 <include refid="Base_Column_List" /> 4 from tb_business 5 <where> 6 <if test="starts != null and starts != '' "> 7 and starts = #{starts,jdbcType=INTEGER} 8 </if> 9 <if test="startTime !=null and startTime != '' "> 10 and register_time <![CDATA[>= ]]>#{startTime,jdbcType=TIMESTAMP} 11 </if> 12 <if test="endTime != null and endTime != '' "> 13 and register_time <![CDATA[<= ]]> #{endTime,jdbcType=TIMESTAMP} 14 </if> 15 </where> 16 </select>
一直測試了好幾遍發現,不管怎么判斷,什么條件都不輸入,都會執行 where starts = ? ;讓我非常納悶,同樣的方法,為啥那個startTime 和endTime 都不執行呢?
后來我看了下,對比了下,這兩種類型不一樣,starts為int類型,我修改成如下代碼:
1 這個問題網上看了很多解決方法,但是測試了都是一個樣,目前我還沒有找到解決辦法,不知道有沒有人知道告知下。我現在的解決方法是將我要判斷的int類型的數據修改為String類型,
因為String類型相當於通用的類型,並不會影響之前的數據。等以后有時間了再好好研究下。
