1. 程式人生 > >mybatis的if條件中判斷false/0

mybatis的if條件中判斷false/0

今天測試提的一個bug,我一度懷疑是他估計搞事情,後來發現是真的存在,

描述:

頁面上有三個鍵: 全部, 已派車, 未派車 ,單選框,顧名思義,全部包含已派車和未派車,

bug的來源是點選未派車的時候搜出出來的資料是錯誤的

我在沒有看程式碼開日誌的時候就想了,要錯就全錯,不可能就一種選項錯吧,然後我就看日誌,發現當選擇未派車的時候

該欄位對應的是false,在日誌中,這個欄位沒有加入到查詢條件中,但是當true的時候是對的

我在service層列印了一下值,是false沒有錯.於是我在service層做了判斷,如果true就變成1,false就變成0.因為資料庫中布林值就是0和1,

(sqlserver資料庫),

entity.put("pcyes", "true".equals(entity.getString("pcyes"))? 1 : ("false".equals(entity.getString("pcyes")) ?0:"" ) );

重啟後還是不正確,依舊無法判斷0;

接下來

service層沒錯,繼續下去就是xml檔案了,該條件的程式碼如下:

 <if test="pcyes!= null and pcyes!=''">
			<![CDATA[ AND  T_CAR_OUT.pcyes = #{pcyes} ]]>
		</if>
 我沒認為我的判斷是錯誤的,但是既然false/0是進不來的,service層都有資料,只有這裡錯了,我考慮了一下,就先取掉了

pcyes!='',

 <if test="yipai != null">
			<![CDATA[ AND  T_CAR_OUT.pcyes = #{yipai} ]]>
		</if>

沒想到真的成功了,好坑,

然後上網查了一下,這裡確實是個坑:

參考自:

http://blog.csdn.net/lich1n/article/details/73511180