踩坑系列—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;
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值