javascript
使用Spring Rest和Spring Data JPA和H2以及Spring Boot示例的Restful API
你好朋友,
在本教程中,您將學習以下內容:
 1.在Spring Boot中配置Spring Rest,Spring Data JPA和H2 
 2.使用Spring Boot創建Springful服務端點的Spring Rest,Spring Data JPA和H2的示例 
 3.使用Swagger測試Restful端點 
1.在Spring Boot中配置Spring Rest,Spring Data JPA和H2
轉到https://start.spring.io/并創建一個名為springRestAndDataJpaWithSpringBoot并具有以下依賴項的項目:
–網??頁
– JPA
– H2
注意:如果您不熟悉使用Spring Initializer創建Spring Boot項目,我建議您參考我以前的文章之一, 如何使用Spring Initializer創建Spring Boot項目 ,我在上面詳細解釋了如何創建Spring Boot項目。使用Spring Initializer。
2.使用Spring Boot創建Springful服務端點的Spring Rest,Spring Data JPA和H2的示例
在此示例中,我們將創建Rest端點以:
–創建員工資源
–檢索員工名單
–檢索員工
–更新員工資源
–刪除員工資源
以下是項目的最終目錄結構:
讓我們看看我們需要創建的各種類和接口。
步驟1
從目錄將項目springRestAndDataJpaWithSpringBoot(通過Spring Initializer創建的)導出到Eclipse。
第2步
打開Pom.xml,它應該具有從spring初始化器網站添加的所有依賴項以及一些默認依賴項。
另外,我手動添加了依賴項以啟用Swagger。 Swagger基本上用于測試其余端點。
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion> <groupId>nl.blogspot.javasolutionsguide</groupId> <artifactId>springRestAndDataJpaWithSpringBoot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springRestAndDataJpaWithSpringBoot</name><description>Demo project for Spring Boot</description><parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent><properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties><dependencies><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency><dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin> </plugins></build></project>第三步
Spring Boot自動創建了一個名為SpringRestAndDataJpaWithSpringBootApplication的Java文件。 此類用于啟動Spring Boot應用程序。 我們需要在這個課上做以下事情:
–啟用招搖
 我們已經在Pom.xml中添加了Swagger的依賴關系。此外,為了在Spring Boot中啟用Swagger,我們需要在@ EnableSwagger2注釋的頂部放置 
 SpringRestAndDataJpaWithSpringBootApplication類。 
–告訴Spring Boot掃描哪些軟件包以考慮由Spring管理的bean
我們需要在SpringRestAndDataJpaWithSpringBootApplication類的頂部使用@ComponentScan(basePackages =“ nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot”)。
第四步
創建員工實體
package nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.entity;import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table;/*** @author JavaSolutionsGuide**/ @Entity @Table(name="EMPLOYEE") public class Employee {@Id@GeneratedValue(strategy= GenerationType.IDENTITY)private Long id;@Column(name="EMPLOYEE_NAME")private String name;@Column(name="EMPLOYEE_SALARY")private Integer salary;@Column(name="DEPARTMENT")private String department;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getSalary() {return salary;}public void setSalary(Integer salary) {this.salary = salary;}public String getDepartment() {return department;}public void setDepartment(String department) {this.department = department;} }第5步
創建具有所有操作的Rest Controller。
package nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.controller;import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.entity.Employee; import nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.service.EmployeeService;/*** @author JavaSolutionsGuide**/ @RestController public class EmployeeRestController {@Autowiredprivate EmployeeService employeeService;public void setEmployeeService(EmployeeService employeeService) {this.employeeService = employeeService;}@GetMapping("/api/employees")public List<Employee> getEmployees() {List<Employee> employees = employeeService.retrieveEmployees();return employees;}@GetMapping("/api/employees/{employeeId}")public Employee getEmployee(@PathVariable(name="employeeId")Long employeeId) {return employeeService.getEmployee(employeeId);}@PostMapping("/api/employees")public void saveEmployee(Employee employee){employeeService.saveEmployee(employee);System.out.println("Employee Saved Successfully");}@DeleteMapping("/api/employees/{employeeId}")public void deleteEmployee(@PathVariable(name="employeeId")Long employeeId){employeeService.deleteEmployee(employeeId);System.out.println("Employee Deleted Successfully");}@PutMapping("/api/employees/{employeeId}")public void updateEmployee(@RequestBody Employee employee,@PathVariable(name="employeeId")Long employeeId){Employee emp = employeeService.getEmployee(employeeId);if(emp != null){employeeService.updateEmployee(employee);}}}第6步
創建Service接口,其中包含檢索雇員列表,一名雇員,將雇員保存在數據庫中,刪除雇員以及更新和雇員所需的方法。
package nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.service;import java.util.List;import nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.entity.Employee;/*** @author JavaSolutionsGuide**/ public interface EmployeeService {public List<Employee> retrieveEmployees();public Employee getEmployee(Long employeeId);public void saveEmployee(Employee employee);public void deleteEmployee(Long employeeId);public void updateEmployee(Employee employee); }步驟7
為在步驟6中創建的接口創建實現類
package nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.service.impl;import java.util.List; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.entity.Employee; import nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.repository.EmployeeRepository; import nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.service.EmployeeService;/*** @author JavaSolutionsGuide**/ @Service public class EmployeeServiceImpl implements EmployeeService{@Autowiredprivate EmployeeRepository employeeRepository;public void setEmployeeRepository(EmployeeRepository employeeRepository) {this.employeeRepository = employeeRepository;}public List<Employee> retrieveEmployees() {List<Employee> employees = employeeRepository.findAll();return employees;}public Employee getEmployee(Long employeeId) {Optional<Employee> optEmp = employeeRepository.findById(employeeId);return optEmp.get();}public void saveEmployee(Employee employee){employeeRepository.save(employee);}public void deleteEmployee(Long employeeId){employeeRepository.deleteById(employeeId);}public void updateEmployee(Employee employee) {employeeRepository.save(employee);} }步驟8
創建一個存儲庫類,它將擴展Spring數據JPA JpaRepository,因此將提供開箱即用地執行CRUD操作的方法。
package nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.repository;import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository;import nl.blogspot.javasolutionsguide.springRestAndDataJpaWithSpringBoot.entity.Employee;@Repository public interface EmployeeRepository extends JpaRepository<Employee,Long>{}步驟9
通過在application.properties文件中添加以下行來啟用H2數據庫Web控制臺
spring.h2.console.enabled=truespring.h2.console.path=/h2Spring Boot將自動處理H2數據庫的數據源的創建,但是我們也可以在application.properties文件中配置數據源,如下所示:
spring.datasource.url=jdbc:h2:file:~/testspring.datasource.username=saspring.datasource.password=spring.datasource.driver-class-name=org.h2.Driver第10步
這樣,您就可以使用Spring Rest和帶有h2數據庫的spring data JPA創建您的Restful API。
現在,您只需要運行SpringRestAndDataJpaWithSpringBootApplication.java類,它將確保它將生成您的代碼,將代碼打包在jar中,然后將其部署到嵌入式tomcat服務器上。
步驟11
通過點擊以下URL打開H2數據庫控制臺
http://localhost:8080/h2/它將顯示以下屏幕:
單擊“連接”按鈕,它將把您連接到H2數據庫。 并且您可以看到EMPLOYEE表已創建,但是該表中沒有數據,這與我們預期的一樣。
3.使用Swagger測試Restful端點
要測試您的其余端點,請點擊以下Swagger URL:
http://localhost:8080/swagger-ui.html它將打開以下頁面
單擊“ employee-rest-controller”鏈接。 它將向您顯示此控制器支持的操作,如下所示:
現在,我們可以在上面的屏幕快照中看到五個端點。 我們將一一測試。
挽救員工– / api / employees
我們要做的第一件事是在數據庫中創建資源,為此我們將使用POST操作并使用/ api / employees端點。
單擊saveEmployee并填寫我們創建資源所需的所有必需數據,然后單擊“試用”按鈕。
這就是您的請求和響應的樣子
如您所見,響應代碼為200,表示成功,因此我們的記錄應該已經在H2數據庫中創建了。
讓我們檢查一下。
打開H2 Web控制臺并查詢EMPLOYEE表,您可以看到我們從Swagger UI推送的記錄。
同樣,從Swagger UI中再插入一名雇員,并輸入以下數據:
再次查詢數據庫,您將在數據庫中看到兩條記錄,如下所示:
獲取員工-/ api /員工
現在,由于我們已經在數據庫中插入了兩個記錄,我們將嘗試在GET操作的幫助下并使用/ api / employees端點來檢索這些記錄,如下所示:
單擊getEmployees,然后由于我們要檢索所有雇員的列表,因此無需傳遞任何參數。
因此,只需單擊“嘗試一下”按鈕,您就會在響應中看到一個員工列表。
獲取員工
接下來,我們將使用GET操作根據輸入的employeeId僅檢索一名雇員。 我們將把employeeId傳遞給其余端點/ api / employees / {employeeId}。
單擊getEmployee并將employeeId填充為1,這意味著我們要檢索employeeId為1的雇員。
單擊嘗試按鈕,您將在響應中看到具有employeeId 1的雇員的數據,如下所示:
更新員工-/ api / employees / {employeeId}
接下來,我們將使用PUT操作和/ api / employees / {employeeId}端點來測試更新的員工休息端點。
單擊updateEmployee鏈接。 粘貼employee json之一,并放入相應的employeeId,如下所示:
單擊“試用”按鈕,您將看到以下響應,響應代碼為200(SUCCESS)。
驗證雇員ID為1的員工在H2數據庫的EMPLOYEE表中將薪水從1000更新為3000的更新記錄。
刪除員工–
接下來,我們將使用DELETE操作并使用/ api / employees / {employeeId}端點來測試delete Employee rest端點。
單擊deteleEmployee鏈接并填寫employeeId 1,這意味著我們要刪除具有employeeId 1的雇員。
單擊“試用”按鈕,您將獲得響應代碼200,這表示請求已成功處理。
讓我們通過打開H2控制臺并查詢數據庫來驗證是否已成功從數據庫中刪除了具有employeeId 1的雇員。
正如我們在上面看到的那樣,我們在EMPLOYEE表中只有雇員id為2的雇員,因此雇員id為1的雇員已被成功刪除。
摘要
因此,在以上文章中,我們看到了如何使用Spring Rest,Spring Data JPA和帶有Spring Boot的H2數據庫來創建Restful API。
我們要:
–使用必需的依賴項從spring Initializer創建Spring Boot項目。
–通過在POM.xml中添加其他依賴項并在spring boot應用程序類中添加批注來啟用swagger支持。
–通過在application.properties中添加必要的屬性來啟用H2數據庫。
–編寫要使用的Rest Controller,服務,存儲庫和實體。
–啟動Spring Boot應用程序,它將自動部署到嵌入式服務器。
–使用Swagger UI測試其余端點,并使用H2控制臺驗證H2數據庫中的數據。
謝謝閱讀。 與您認為有幫助的人分享。
翻譯自: https://www.javacodegeeks.com/2018/08/restful-api-spring-rest-data-jpa-h2.html
總結
以上是生活随笔為你收集整理的使用Spring Rest和Spring Data JPA和H2以及Spring Boot示例的Restful API的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 科比臂展(科比是天赋平平还是天赋异禀?)
- 下一篇: 电脑的主板上怎么接线图解(电脑主板接线图
