关于mybatis返回值为List集合的时候;返回size是1但是获取该对象时为null

        今天做项目的时候,发现一直在NPE,然后进行调试,发现了这个问题

内容为空,但是size为1
size=1 && item =null ?

        真是奇怪了嘞,我还以为真的查出来了空值,然后加上了`CollectionUtil.isNotEmpty`进行判断,结果还是那样,确实奇怪,不信邪,于是便使用了 `!=null && size>0` 结果还是不行(这是必然嘛,上面结果就显示出来了,我当时忘记了😥)

        一直在试错,一直在是错,然后我就找到了sql那里,发现同样为查询,为什么查count没有这个问题,但是查sum有这个问题,于是我就百度,终于,有人提到了,使用mybatis查询返回值为list的时候,如果查询结果全为空,这个时候需要有一列为能查得到的数据,不然就会返回一个size为1,但是值为null的数据,这里的null并不是null(空),而是一个null的值,所以就被返回了,具体的细节我也不说了,也说不明白,直接说解决方法吧。

        就是在查询字段设置默认值,如果需要哪个字段,设置哪个字段的默认值就行了,最好不要全设置。

SELECT a,COALESCE(b,0) FROM table WHERE a=b

        这里使用了coalesce设置默认值,这样查询为空的时候,就会默认返回设置的值了,并不会返回空的数据了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值