MyBatis中<if test=" ">標簽條件不起作用
阿新 • • 發佈:2018-09-11
對比 efi myba start excel timestamp excel導出 register 今天
問題產生?
今天在做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 <select id="selectBusinessByHoutaiShenhe" resultMap="BaseResultMap" > 2 select 3 <include refid="Base_Column_List" /> 4 from tb_business 5 <where> 6 <if test="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>
starts == ‘ ‘ 如果starts 類型為int類型,應該這樣判斷。
MyBatis中<if test=" ">標簽條件不起作用