更新用户资源上的 GET 方法以使用 JPA

2025年3月17日 | 阅读 3 分钟

在本主题中,我们将创建一个检索所有用户的服务。

我们仍然在使用 UserResource,它与内存进行通信。现在我们将创建一个新的 UserResource,它将与嵌入式数据库进行通信。让我们创建一个新的用户资源。

步骤 1:复制 UserResource.java 文件并将其粘贴到 user 包中。将其重命名为 UserJPAResource。

步骤 2:现在,我们有两个具有相同名称的 URI,这会产生冲突。要消除此冲突,我们将在 UserJPAResource.java 文件中添加 /jpa

UserJPAResource.java

但它并没有真正与数据库进行通信。我们需要创建一个 Spring Data 存储库。

步骤 3:创建一个名为 UserRepository 的接口,该接口扩展 JpaRepository。指定必须管理的实体。我们指定了 User 和 Integer。现在我们已经准备好 UserRepository 了。

UserRepository.java

步骤 4:创建 UserResource 的用法。我们已经在 UserJPAResource 类中自动装配了 UserRepository 接口。

步骤 5:在 retriveAllUsers() 方法中返回 userRepository.findAll()

retriveAllUsers() 是唯一从嵌入式数据库检索数据的方法,所有其他方法都从静态数组列表中检索数据。

步骤 6:打开 Postman。键入 URI https://:8080/jpa/users 并发送 GET 请求。它显示了从嵌入式数据库获取的所有数据。

Updating GET Methods on User Resource to Use JPA

再次使用 URL https://:8080/jpa/users/1 发送 GET 请求。它返回指定的 user id,即 1,但它从内存中获取数据。

但我们需要从嵌入式数据库中获取数据。我们需要更改 UserJPAResource.java 中的以下服务。

在以下服务中,findById() 返回 User 的 Option,无论用户是否为 null。每当我们使用 findById() 时,都有两种可能性: id 存在或不存在。当它不存在时,它会带有一个正确的对象。我们将通过语句 if(!user.isPresent()) 检查用户是否存在。如果用户不存在,它会抛出异常。

再次使用 URL https://:8080/jpa/users/1 发送 GET 请求。它返回指定的 user 和 /jpa/users 的链接。