上海做网站哪家便宜,怎么防止网站被注册机,金华规划局网站开发区,网站建设方案维护Spring Boot – CrudRepository 示例
Spring Boot 建立在 Spring 之上#xff0c;包含 Spring 的所有功能。由于其快速的生产就绪环境#xff0c;使开发人员能够直接专注于逻辑#xff0c;而不必费力配置和设置#xff0c;因此如今它正成为开发人员的最爱。Spring Boot 是…Spring Boot – CrudRepository 示例
Spring Boot 建立在 Spring 之上包含 Spring 的所有功能。由于其快速的生产就绪环境使开发人员能够直接专注于逻辑而不必费力配置和设置因此如今它正成为开发人员的最爱。Spring Boot 是一个基于微服务的框架在其中创建生产就绪的应用程序只需很少的时间。以下是 Spring Boot 的一些功能
它可以避免 Spring 中繁重的 XML 配置它可以轻松维护和创建 REST 端点它包括嵌入式 Tomcat 服务器部署非常容易war和jar文件可以轻松部署在tomcat服务器中 Crud存储
Spring Boot 的 CrudRepository 是 Spring Data JPA 框架的一部分它提供了对关系数据库中的实体执行CRUD创建、读取、更新、删除操作的便捷方法。CrudRepository 是一个接口它扩展了基本的 Repository 接口并向其添加了通用的 CRUD 方法。它在包org.springframework.data.repository中定义它扩展了 Spring Data Repository接口。如果有人想在 Spring Boot 应用程序中使用 CrudRepository他/她必须创建一个接口并扩展 CrudRepository 接口。
句法
public interface CrudRepositoryT, ID extends RepositoryT, ID
这里
T存储库管理的域类型通常是实体/模型类名ID存储库管理的实体的 id 类型通常是在实体/模型类中创建的 Id 的包装类
示例
public interface DepartmentRepository extends CrudRepositoryDepartment, Long {}
现在让我们讨论一下 CrudRepository 内部可用的一些最重要的方法如下所示
方法 1save()
保存给定的实体。使用返回的实例进行进一步的操作因为保存操作可能已经完全改变了实体实例。
句法 S extends T S save(S entity)
参数实体 - 不能为空。返回已保存的实体永远不会为空。抛出IllegalArgumentException – 如果给定的实体为空。
方法 2 findById()
通过 id 检索实体。
句法
OptionalT findById(ID id)
参数id – 不能为空。返回具有给定 id 的实体如果未找到则返回 Optional#empty()。抛出异常如果“id”为空则会抛出IllegalArgumentException。
方法3findAll()
返回该类型的所有实例。
句法
IterableT findAll()
返回类型所有实体
方法 4 count()
返回可用实体的数量。
句法
long count()
返回类型实体的数量。
方法 5 deleteById()
删除具有给定 id 的实体。
句法
void deleteById(ID id)
参数Id不能为空
抛出异常如果给定的 id 为空则抛出 IllegalArgumentException 。
例子
以下 Spring Boot 应用程序使用 CrudRepository 管理 Department 实体。数据保存在 H2 数据库中。我们使用 RESTful 控制器。
步骤1
参考这篇文章如何使用IntelliJ IDEA创建Spring Boot项目并创建一个Spring Boot项目。
第 2 步添加以下依赖项
Spring WebH2 DatabaseLombokSpring Data JPA
以下是pom.xml文件的完整代码。请检查是否有遗漏。
XML ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.5.5/version relativePath/ !-- lookup parent from repository -- /parent groupIdcom.amiya/groupId artifactIdSpring-Boot-Demo-Project/artifactId version1.0.0-SNAPSHOT/version nameSpring-Boot-Demo-Project/name descriptionDemo project for Spring Boot/description properties java.version11/java.version /properties dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcom.h2database/groupId artifactIdh2/artifactId scoperuntime/scope /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-devtools/artifactId scoperuntime/scope optionaltrue/optional /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-jpa/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency /dependencies build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration excludes exclude groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /exclude /excludes /configuration /plugin /plugins /build /project
步骤 3创建 4 个包并在这些包中创建一些类和接口如下图所示
entityrepositoryservicecontroller 笔记
绿色圆形图标“I”按钮是界面蓝色圆形图标“C”按钮属于类
步骤 4实体包内部
在 Department.java 文件中创建一个简单的POJO 类。以下是Department.java文件的代码
Java package com.amiya.springbootdemoproject.entity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; Entity Data NoArgsConstructor AllArgsConstructor Builder public class Department { Id GeneratedValue(strategy GenerationType.AUTO) private Long departmentId; private String departmentName; private String departmentAddress; private String departmentCode; }
步骤 5存储库包内部
创建一个简单的接口并将该接口命名为 DepartmentRepository。正如我们上面讨论的那样 这个接口将扩展 CrudRepository 。 Java // Java Program to Illustrate DepartmentRepository.java File // Importing package module to this code package com.amiya.springbootdemoproject.repository; // Importing required classes import com.amiya.springbootdemoproject.entity.Department; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; // Annotation Repository // Class public interface DepartmentRepository extends CrudRepositoryDepartment, Long { }
步骤 6服务包内
在包内创建一个名为DepartmentService 的接口和一个名为DepartmentServiceImpl的类。以下是DepartmentService.java文件的代码。
示例 1-A
Java package com.amiya.springbootdemoproject.service; import com.amiya.springbootdemoproject.entity.Department; import java.util.List; public interface DepartmentService { // save operation Department saveDepartment(Department department); // read operation ListDepartment fetchDepartmentList(); // update operation Department updateDepartment(Department department, Long departmentId); // delete operation void deleteDepartmentById(Long departmentId); }
示例 1-B
Java // Below is the code for the DepartmentServiceImpl.java file. package com.amiya.springbootdemoproject.service; import com.amiya.springbootdemoproject.entity.Department; import com.amiya.springbootdemoproject.repository.DepartmentRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; Service public class DepartmentServiceImpl implements DepartmentService{ Autowired private DepartmentRepository departmentRepository; // save operation Override public Department saveDepartment(Department department) { return departmentRepository.save(department); } // read operation Override public ListDepartment fetchDepartmentList() { return (ListDepartment) departmentRepository.findAll(); } // update operation Override public Department updateDepartment(Department department, Long departmentId) { Department depDB departmentRepository.findById(departmentId).get(); if (Objects.nonNull(department.getDepartmentName()) !.equalsIgnoreCase(department.getDepartmentName())) { depDB.setDepartmentName(department.getDepartmentName()); } if (Objects.nonNull(department.getDepartmentAddress()) !.equalsIgnoreCase(department.getDepartmentAddress())) { depDB.setDepartmentAddress(department.getDepartmentAddress()); } if (Objects.nonNull(department.getDepartmentCode()) !.equalsIgnoreCase(department.getDepartmentCode())) { depDB.setDepartmentCode(department.getDepartmentCode()); } return departmentRepository.save(depDB); } // delete operation Override public void deleteDepartmentById(Long departmentId) { departmentRepository.deleteById(departmentId); } }
步骤 7控制器包装内部
在包内创建一个名为DepartmentController 的类。
Java // Java Program to Illustrate DepartmentController File // Importing package module package com.amiya.springbootdemoproject.controller; // Importing required classes import com.amiya.springbootdemoproject.entity.Department; import com.amiya.springbootdemoproject.service.DepartmentService; import java.util.List; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; // Annotation RestController // Class public class DepartmentController { // Annotation Autowired private DepartmentService departmentService; // Save operation PostMapping(/departments) public Department saveDepartment( Valid RequestBody Department department) { return departmentService.saveDepartment(department); } // Read operation GetMapping(/departments) public ListDepartment fetchDepartmentList() { return departmentService.fetchDepartmentList(); } // Update operation PutMapping(/departments/{id}) public Department updateDepartment(RequestBody Department department, PathVariable(id) Long departmentId) { return departmentService.updateDepartment( department, departmentId); } // Delete operation DeleteMapping(/departments/{id}) public String deleteDepartmentById(PathVariable(id) Long departmentId) { departmentService.deleteDepartmentById( departmentId); return Deleted Successfully; } }
步骤 8下面是 application.properties 文件的代码
server.port 8082# H2 Database
spring.h2.console.enabledtrue
spring.datasource.urljdbc:h2:mem:dcbapp
spring.datasource.driverClassNameorg.h2.Driver
spring.datasource.usernamesa
spring.datasource.passwordpassword
spring.jpa.database-platformorg.hibernate.dialect.H2Dialect
在 Postman 中测试端点
端点 1 POST – http://localhost:8082/departments/ 端点 2 GET – http://localhost:8082/departments/ 端点 3 PUT – http://localhost:8082/departments/1 端点 4删除 – http://localhost:8082/departments/1 H2 数据库如下图所示