你真的会使用Optional避免空指针NPE吗?
使用Optional可以避免查询到的数据库中的数据为null从而导致的后面代码出现的问题,还可以减少自己写的if else判断查询的内容是否为空
使用方法:
@PostMapping("test3")
@ResponseBody
public Optional<Users> test3(@RequestBody Map<String,String> data) {
System.out.println(data.get("username"));
Users users = usersMapper.selectOne(data.get("username"));
Optional<Users> users1 = Optional.ofNullable(users);
System.out.println("user:"+users1);
//判断如果这个存在的话就调用下面的语句
if (users1.isPresent()){
System.out.println(users1.get().getUsername());
return users1;
}else {
// 否则返回空的user
Users user = new Users();
return Optional.of(user);
}
当然java中已经替我们封装好这个使用方法了,不需要让我们自己使用if判断然后再返回了,除非有其他用法
@ResponseBody
public Optional<Users> test4(@RequestBody Map<String,String> data) {
System.out.println(data.get("username"));
Users users = usersMapper.selectOne(data.get("username"));
Optional<Users> users1 = Optional.ofNullable(users);
//如果不存在就使用默认值
Users myuser = users1.orElse(new Users());
System.out.println(myuser);
return Optional.of(myuser);
}
查询具体某一个值时也看查询,如果没找到则可以使用指定值
查询具体某一个值时也看查询,如果没找到则可以使用指定值
@PostMapping("test5")
@ResponseBody
public Optional<Users> test5(@RequestBody Map<String,String> data) {
System.out.println(data.get("username"));
Users users = usersMapper.selectOne(data.get("username"));
Optional<Users> users1 = Optional.ofNullable(users);
//如果没找到则可以使用指定值
users1.map(Users::getUsername).orElse("没找到名字");
System.out.println(users1.map(Users::getUsername).orElse("没找到名字"));
Users myuser = users1.orElse(new Users());
return Optional.of(myuser);
}
适当使用可以帮助提高代码的可维护性(当然看起来也会更高级,至少比if(user != null)高级一点吧)
版权属于:戏人看戏博客网
本文链接:https://day.nb.sb/archives/1281.html
若无注明均为戏人看戏原创,转载请注明出处,感谢您的支持!
最后更新 2023-08-14