数据库查数据的返回值问题
码代码的过程中,经常会遇到空指针的问题。今天重构代码,发现对⼀个数据库查询操作的List类型的返回值进⾏操作时,从来没有出现空指针异常,⽽我知道这个查询的数据很⼤部分情况下在数据库中并没有记录。既然没有数据那List<Object>类型的返回值不是null就是size = 0的空List。我在使⽤这个List<Object>类型的返回值进⾏操作时(即调⽤它的⽅法)时没有报空指针异常,说明我的数据库查询操作返回的是⼀个size = 0的空List。突然想起来,我之前特意验证过这个问题,只不过⼜忘记了,所以在这⾥记录⼀下。知道了这个情况后,就可以省去空指针判断了,毕竟,代码⾥有很多空指针判断的话,影响代码美观,不容易阅读。我们应该避免空指针的产⽣,⽽不是进⾏⼤量的空指针判断。例如我们初始化⼀个List时,尽量不要赋值为null,⽽是new ⼀个出来。我们不会频繁的new对象,所以初始化的时候new⼀个对象,并不会在堆上占⽤很多内存。
1.SpringBoot jpa
查询数据,返回List。
List<DeviceBindInfoBean> bindUserList = deviceBindInfoRepository.findAllByUserId(userId);
if (bindUserList.stream().map(DeviceBindInfoBean::getDeviceId).anyMatch(item ->item.equals(deviceId))) {
throw new UserHasBindDeviceException();
}
如果数据库没有记录,if语句也不会报空指针异常,因为bindUserList是⼀个size = 0的空List。
2.SpringBoot + MyBatis
jpa mybatisList<CommonBodyInfo> commonBodyInfoList =
if (commonBodyInfoList.isEmpty()) {
try (Jedis jedis = Resource()){
jedis.del(key);
wArrayList();
}
}
数据库没有数据,也是返回size = 0的空List,调⽤isEmpty()⽅法不会报空指针异常。
3.Java8 Stream
List<String> list = wArrayList("1","2");
List<String> collect = list.stream().filter(a -> a.equals("3")).List());
System.out.println(collect.size());
输出0,不会报空指针异常。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论