本文主要介绍升级SpringBoot2.0之后,之前使用的findOne()方法的替代方法findById()方法的使用,以及Optional<T>的使用。

1、findOne()方法的替代方法findById()

2.0版本,Spring-Data-Jpa修改findOne()。

1)2.0版本之前

T findOne(ID primaryKey);

2)2.0版本

  Optional<T> findById(ID id); 

2、Optional Optional<T>的使用

文档Optional

container对象,可能包含也可能不包含非null值。如果存在值,则isPresent()将返回trueget()将返回该值。提供依赖于是否存在包含值的其他方法,例如orElse()(如果值不存在则返回默认值)和ifPresent()(如果值存在则执行代码块)。
Optional<T> findById(ID id)中Optional的一些用法

1)如果没找到指定实体,则返回一个默认值。

Foo foo = repository.findById(id)
.orElse(new Foo());

或者

Foo foo = repository.findById(id)
.orElse(null);

2)如果找到实体返回它,否则抛出异常

return repository.findById(id)
.orElseThrow(() -> new EntityNotFoundException(id));

3)假设希望根据是否找到实体来应用不同的处理(无需抛出异常)

Optional<Foo> fooOptional = fooRepository.findById(id);
if (fooOptional.isPresent()){
    Foo foo = fooOptional.get();
   // 处理 foo ...
}
else{
   //另一种情况....
}