假如这个地方可能为null,那他一定会为null
假如你的代码,在某个地方(比如controller层)提示你:这个方法调用可能会产生null
,那么千万不要视而不见,在某一瞬间它一定会是null,势必报错。
/**
* 修改保存管理员
*/
@PostMapping("/admin/edit")
@ResponseBody
public Message editAdmin(Admin admin) {
//查询账户是否存在
Admin loginAdmin = adminService.findAdminByAdminName(admin.getAdminName());
if (loginAdmin != null) {
//根据管理员账号查到的管理员是不是当前管理员
if (!admin.getId().equals(loginAdmin.getId())) {
//不是当前管理员
return Message.error("账户已经被占用");
}
}
Admin oldAdmin = adminService.findAdminById(admin.getId());
//判断是否修改过密码(能走到这里,说明设置的账号是合法的,要么是自己的,要么是新的)
if (admin.getAdminPwd().equals(oldAdmin.getAdminPwd())) {//这里要用oldAdmin,而不是loginAdmin
//没修过
admin.setAdminPwd(null);
} else {
//重新加密,写入数据库
String pwd = DigestUtils.md5DigestAsHex(admin.getAdminPwd().getBytes());
admin.setAdminPwd(pwd);
}
//修改管理员
boolean flag = adminService.updateAdmin(admin);
if (flag) {
return Message.success();
} else {
return Message.fail();
}
}
上边代码的某一行一定得是oldAdmin.getAdminPwd()
,假如写成loginAdmin.getAdminPwd()
,就会有提示,一定要检查代码。