運行結果以下:
java
數據庫數據以下 應該查詢出11條數據,從上圖看輸出的sql動態sql語句,if條件沒執行sql
代碼以下:
測試類數據庫
@Test public void testStorageCount() { Map<String, Object> storageMap = new HashMap<>(); storageMap.put("status", 0); int count = wmsWarehouseService.findCountStorageNum(storageMap); System.out.println("數量" + count); }
service 實現類mybatis
public int findCountStorageNum(Map<String, Object> params) { return dao.selectCountStorageNum(params); }
dao 和mapperapp
int selectCountStorageNum(Map<String, Object> params); <select id="selectCountStorageNum" resultType="java.lang.Integer"> SELECT count(*) FROM wms_warehouse WHERE del_flag = 0 <if test="subordinate != '' and subordinate != null"> AND subordinate = #{subordinate} </if> <if test="status != '' and status != null"> AND status = #{status} </if> </select>
後來發現是傳參數的問題:
這不該該傳入0,應該把0加上引號改成字符串。改後執行測試類,效果以下:
OK
總結:mybatis傳入參數,若是是0或1時要加上引號,mybatis會默認數值0爲false,1爲true。測試