jpa中的Optional对象使用笔记
今天在编写Spring Data JPA中想通过ID来查询数据库是否存在数据发现findById方法时,返回的对象为Optional 类,发现Optional大有学问
首先findById返回的Optional<实体类>,我们可以如何处理
情况1:我们可以使用.isPresent()方法利用if语句判断findById方法是否返回实体类,进行对应的处理,例子如下:
Optional<Message> optionalMessage = messageRepository.findById(phone_number);
if (optionalMessage.isPresent()){
Message message = optionalMessage.get(); //这里如果Optional存在实体类,使用.get()方法得到实体进行处理
String name = message.getName();
return ResultVOUtil.success("注册成功",message);
}else {
return ResultVOUtil.error(405,"手机验证码出错");
}
情况2:如果我们不需要进行判断可以使用更简单的方法,不存在则返回null
public Admin findById(@PathVariable("user_name") String user_name){
Optional<Admin> optionalAdmin = adminRepository.findById(user_name);
return optionalAdmin.orElse(null);//如果实体类不存在则返回null,存在则返回该查询的实体类
}
情况3:如果查询结果不为null,返回该对象,否则抛出异常
optionalAdmin.orElseThrow(EntityNotFoundException::new);