今天做项目的时候,发现一直在NPE,然后进行调试,发现了这个问题
真是奇怪了嘞,我还以为真的查出来了空值,然后加上了`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设置默认值,这样查询为空的时候,就会默认返回设置的值了,并不会返回空的数据了。