mybatis 傳入參數map動態sql判斷始終無效

運行結果以下:
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。測試

相關文章
相關標籤/搜索