使用JPA插入数据的会简单到我们怀疑人生,我们仅仅需要在原KlassController中加入以下代码便能够完成数据的保存功能。 controller/KlassController.java ```java @PostMapping public void save(@RequestBody Klass klass) { klassRepository.save(klass); ➊ } ``` * ➊ KlassRepository继承了CrudRepository,而CrudRepository中为我们预置了save方法,在此直接调用即完成了数据保存的功能。 ### 测试 启动数据库、启动后台应用后进行测试: HTTP-Request ``` POST http://localhost:8080/Klass Content-Type: application/json { "name": "测试班级" } ``` 测试结果: ``` POST http://localhost:8080/Klass HTTP/1.1 200 ① Content-Length: 0 Date: Tue, 05 Nov 2019 06:22:09 GMT <Response body is empty> Response code: 200①; Time: 86ms; Content length: 0 bytes ``` * ① 返回的状态码为200。 ![](https://img.kancloud.cn/67/88/678823060faec00bce19fcc127ceca59_482x121.png) 接下来,我们在数据表中新增一个用于测试的教师: ![](https://img.kancloud.cn/ef/db/efdb234810f24d091a75bb34ba0fe6ee_678x123.png) 然后继续进行数据插入测试: ``` POST http://localhost:8080/Klass Content-Type: application/json { "name": "测试班级1", "teacher": { "id": 1 } } ``` ![](https://img.kancloud.cn/db/16/db166b873969eab63140ffdd0fb115a8_455x133.png) **结论:** 使用JPA的确可以非常轻松的完成数据插入操作 。 > 在向数据表中添加数据时,我们有时候也会把该操作称为`插入`数据或`创建`数据,这是由于在`sql`中新增数据为`insert`,而在讲数据一般操作的`CRUD`中的`C`又对应`create`。 ## 自定义返回状态码 我们习惯性在数据成功新增后将返回的http状态码设置为201,在成功的查询数据后将返回的状态码设置为200;同时我们还习惯性使用`get`方法进行数据的查询操作,使用`post`方法来进行数据的新增操作。我们的这种`习惯`,是完全的建立在`REST`风格之上的。`REST`风格是一种软的规范,遵守这个规范的好处是:开发的项目源码对同样遵循该规范的工程师具有高度的可读性。 在Spring中使用`@ResponseStatus`注解来定义返回状态码: controller/KlassController.java ``` @PostMapping @ResponseStatus(HttpStatus.CREATED) ➊ public void save(@RequestBody Klass klass) { klassRepository.save(klass); } ``` * ➊ 该注解接收的参数类型为HttpStatus,HttpStatus是一个emum类型,而HttpStatus.CREATED是其中的一项,对应的值为:CREATED(201, "Created"),表示:状态码对应为201,对该状态码的说明为:Created(已创建)。 ### 测试 再次进行测试: ``` POST http://localhost:8080/Klass HTTP/1.1 201 ① Content-Length: 0 Date: Tue, 05 Nov 2019 06:46:44 GMT <Response body is empty> Response code: 201; Time: 259ms; Content length: 0 bytes ``` * ① 状态码成功变更为201. # 参考文档 | 名称 | 链接 | 预计学习时长(分) | | --- | --- | --- | | 源码地址 | [https://github.com/mengyunzhi/spring-boot-and-angular-guild/releases/tag/step3.3.4](https://github.com/mengyunzhi/spring-boot-and-angular-guild/releases/tag/step3.3.4) | - | | Accessing Data with JPA | [https://spring.io/guides/gs/accessing-data-jpa/](https://spring.io/guides/gs/accessing-data-jpa/) | 15 | | HTTP 状态码 | [https://www.runoob.com/http/http-status-codes.html](https://www.runoob.com/http/http-status-codes.html) | 5 |