首页 > 解决方案 > Spring Boot - Jpa 存储库

问题描述

我在示例项目中遇到了下面这段代码。如果不正确定义 findItemsById 方法,我无法理解它是如何工作的。此方法在扩展 JpaRepositiry 的 ItemsRepository 接口中声明。

public interface ItemsRepo extends JpaRepository<Items,Long> {
Optional<Items> findItemsById(Long id);
}

在服务类中,它的定义如下所示。

public Items findItemsById(Long id) throws Throwable {
    return itemsRepo.findItemsById(id).orElseThrow(()-> new UserNotFoundException("items by id "+id+" not found"));
}

如果没有 findItemsById 的实际定义,它是如何工作的。将其声明为可选与此有任何关系吗?

标签: javaspringspring-bootspring-data-jpaspring-data

解决方案


Spring Data repository 查询派生机制来表达谓词是允许这样做的特性。基本上,查询是通过“解析”方法名称派生的。为此有一些规则(您必须使用实体属性的名称)和关键字(findbycount等...)。您可以在以下位置查看更多信息:


推荐阅读