踩坑系列—mybatis查詢沒有數據時返回的list是null還是空集合?

場景:
根據多個條件查詢,返回list集合數據

代碼:

// 第1步:根據頁面多個條件查詢
List<Base> list = userDao.queryOrders(queryParams);

if(null == list)
	return null;

//第2步:有數據再追加其他信息
List<Long> ids = new ArrayList<>(list.size());
for (Base base : list){
		ids.add(base.getId());
}

//第3步:根據ids使用in查詢

//第4步:將追加完信息的list返回

現象:

測試的時候少輸入了某個條件,queryOrders查詢有結果,代碼正常,但是當輸入這個條件,導致queryOrders沒有查詢結果時,報了sql錯誤,而且錯誤的sql是 【第3步:根據ids使用in查詢】 這裏導致的。

排查:

按自己之前的理解,queryOrders沒有查詢結果,
if(null == list)
return null;
這裏就會返回,不會執行下面的代碼,但是結果非預期,於是打印list,觀察

List<Base> list = userDao.queryOrders(queryParams);
logger.info("query result list size:" + (null == list ? "空" : list.size()));

當輸入查詢條件,queryOrders沒有查詢結果時,控制檯打印出的信息:
2019-02-19 15:07:24,003 INFO(PurchasingRemoteSerciceImpl.java:123) - query result list size:0

測試結果:
mybatis查詢沒有數據時返回的list是空集合,即size=0 並不是null

更改代碼如下,查詢正常:

List<Base> list = userDao.queryOrders(queryParams);
if(CollectionUtils.isEmpty(list))
	return null;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章