错误展现
可以看到浏览器显示500,下面是控制台信息
根据图片显示,下面提醒我们是第63行出现问题
打印了一下,发现findAll()方法没有做到自己该做的事
可以看出findAll方法就是一个获取epidemic这个表内容的方法,既然为空,我们就要看看这个数据表的问题,最主要就是看看实体类的变量是否与你的表的键一 一对应,不仅是名称,还有他们的类型,
当然也不要忘记自己的主键。
我的实体类epidemic
@Data
public class Epidemic {
/**
* id主键
*/
private Long epidemicId;
/**
* 城市名称
*/
private String cityName;
/**
* 当前确诊
*/
private Integer currentConfirmedCount;
/**
* 累计确诊
*/
private Integer confirmedCount;
/**
* 疑似确诊
*/
private Integer suspectedCount;
/**
* 治愈人数
*/
private Integer curedCount;
/**
* 死亡人数
*/
private Integer deadCount;
/**
* 高风险数量
*/
private Integer highDangerCount;
/**
* 中风险数量
*/
private Integer midDangerCount;
/**
* 地区id
*/
private Integer locationId;
/**
* 不展示当前曲儿数量
*/
private Byte notShowCurrentConfirmedCount;
/**
* 当前确诊人数的字符串
*/
private String currentConfirmedCountStr;
}
对比之后,我发现自己的没有问题,那就很奇怪了,再回到那行代码
ListEpidemic> all = epidemicServiceImpl.findAll();
findAll咱们暂时没有发现问题,数据库里是有数据的,那我们就要看看这个epidemicServiceImpl变量的问题了,回到这个类变量的声明地方
其实到这里问题就很明显了,那个epidemicServiceImpl变量是无效的,无效的原因就是少了一个注解@Resource
改过来之后再运行
数据就出来了,完美解决
总结
我们在学习过程中碰见最多的除了404,几乎就是这个500,有很多大佬说的过于复杂了,其实在出现所谓的空指针而早就的500,更多的就是数据库的问题,自己的表里的键与实体类的变量名,变量类型不一致造成的,还有就是注解的遗忘,这些都是小问题,但我们总是遗忘,就出现了这种实际上很简单但是解决起来比较麻烦的问题