SpringBoot2.0 (Spring-Data-Jpa) findById(findOne())和Optional的使用:

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

 

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

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

1)2.0版本之前

T findOne(ID primaryKey);

2)2.0版本

  Optional findById(ID id); 

2、Optional Optional的使用

文档:Optional

container对象,可能包含也可能不包含非null值。如果存在值,则isPresent()将返回trueget()将返回该值。提供依赖于是否存在包含值的其他方法,例如orElse()(如果值不存在则返回默认值)和ifPresent()(如果值存在则执行代码块)。
Optional 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 fooOptional = fooRepository.findById(id);
if (fooOptional.isPresent()){
    Foo foo = fooOptional.get();
   // 处理 foo ...
}
else{
   //另一种情况....
}

(转载自:https://www.cjavapy.com/article/293/)

你可能感兴趣的:(SpringBoot2.0 (Spring-Data-Jpa) findById(findOne())和Optional的使用:)