我在示例项目中遇到了下面的这段代码。如果没有正确定义 findItemsById 方法,我无法理解它是如何工作的。该方法在 ItemsRepository 接口中声明,该接口扩展了 JpaRepositiry。
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 的情况下它是如何工作的。声明它为可选与此有什么关系吗?
Spring数据存储库查询派生机制来表达谓词是允许这样做的功能。基本上,查询是通过“解析”方法名称得出的。为此有一些规则(您必须使用实体属性名称)和关键字(
find
、by
、count
等)。您可以在以下位置查看更多信息:
你最好按住Ctrl点击
JpaRepository<Items,Long>
界面并遵循它的方法和它的父方法
在那里你会看到所有的方法并且你可以理解这些方法
欲了解详细信息,您可以关注 spring 文档