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

    xiaoxiao2023-11-26  197

    本文主要介绍升级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()将返回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{ //另一种情况.... }

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

    最新回复(0)