更新UserResource中的POST和DELETE方法以使用JPA

在本节中,我们将把deleteUser()方法和createUser()方法转换为使用JPA。让我们在UserJPAResource.java中进行更改。

步骤1: 修改deleteUser()方法的服务。

步骤2: 删除返回类型,因为userRepository的delete()方法不返回任何内容。

@DeleteMapping("/jpa/users/{id}")  
public void deleteUser(@PathVariable int id)  
{  
userRepository.deleteById(id);  
}  

如果删除失败,它会抛出异常。

步骤3: 打开Postman,并发送一个带有URL http://localhost:8080/jpa/users/1DELETE请求。

restful-web-services-post-method.png

Status: 200 OK 表示记录已成功删除。

再次发送相同的DELETE请求,URL为 http://localhost:8080/jpa/users/1。它返回一个消息 "no entity with id 1 exist"。

{  
"timesatmp": "2017-07-20T12:10:29.988+0000",  
"message": "No class cn.javatiku.rest.webServices.restfulwebservices.user. User entity with id 1 exists! ",  
"details": "uri=/jpa/user/1"  
}  

现在我们将生成一个POST请求来创建一个用户。

步骤4: 使用URL http://localhost:8080/jpa/users 发送一个POST请求。

步骤5: 点击Headers选项卡,确保Content-Typeapplication/json

restful-web-services-post-method2.png

步骤6: 转到Body选项卡,输入用户的namedob。我们输入了名字为James的用户。

restful-web-services-post-method3.png

步骤7: 点击发送按钮。当我们尝试创建用户时,它会抛出ConstaintViolationException

这是因为Hibernate使用序列。在User实体中,Id是生成的值,所以它为我们创建了一个序列。Hibernate正试图插入一个id为1的行。它与我们已经有的数据冲突。为了解决这个冲突,按照以下步骤进行操作:

步骤8: 打开data.sql文件并更改Id。

insert into user values(101, sysdate(), "John");  
insert into user values(102, sysdate(), "Robert");  
insert into user values(104, sysdate(), "Andrew");  
insert into user values(105, sysdate(), "Jack");  

步骤9: 再次发送一个POST请求。它返回Status: 201 Created。这个状态表明用户创建成功。

restful-web-services-post-method4.png

标签: spring, Spring教程, Spring语言学习, Spring框架, Spring框架教程, Spring框架高级教程, spring boot, spring boot入门教程, spring boot学习教程, spring boot下载, spring boot框架入门, spring boot面试题, spring boot笔试题, spring boot技术,