jpa中的Optional对象使用笔记


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);

大家一起加努力吧ヾ(•ω•`)o


文章作者: mark_joker
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 mark_joker !
  目录