1. 程式人生 > >MyBatis中<if test=" ">標簽條件不起作用

MyBatis中<if test=" ">標簽條件不起作用

對比 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=" ">標簽條件不起作用