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()
将返回true
,get()
将返回该值。提供依赖于是否存在包含值的其他方法,例如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{ //另一种情况.... }