📜  Spring Boot – CRUD 操作(1)

📅  最后修改于: 2023-12-03 15:05:15.806000             🧑  作者: Mango

Spring Boot CRUD 操作

在开发过程中,我们经常需要对数据进行增删改查操作。Spring Boot 提供了简单易用的 CRUD 操作支持,帮助我们快速构建应用,本文将介绍如何使用 Spring Boot 实现 CRUD 操作。

准备工作

在开始使用 Spring Boot 进行 CRUD 操作之前,我们需要确保以下条件已经满足:

  • JDK 1.8 或以上
  • Maven 3.2+ 或 Gradle 2.14+
  • IDE (推荐使用 IntelliJ IDEA 或 Eclipse)
创建 Spring Boot 项目

首先,我们需要创建一个 Spring Boot 项目。使用 IntelliJ IDEA 可以通过以下步骤创建:

  1. 打开 IntelliJ IDEA,选择 New Project。
  2. 选择 Spring Initializr,并按照提示填写项目信息。
  3. 选择需要的组件并设置项目名称。
  4. 点击 Finish 完成项目创建。
添加依赖

Spring Boot 提供了对 JPA 的支持,我们需要添加相关的依赖。在 pom.xml 中添加以下依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
创建实体类

在进行 CRUD 操作之前,我们需要定义实体类。实体类用于表示用于持久化的数据,并通过 JPA 将其映射到数据库。以下是一个简单的实体类:

@Entity
@Table(name = "employees")
public class Employee {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   @Column(nullable = false, length = 45)
   private String name;

   @Column(nullable = false, length = 20)
   private String gender;

   @Column(nullable = false, length = 20)
   private String department;

   @Column(nullable = false)
   private Integer age;

   // 省略 getter 和 setter 方法
}

在实体类上使用 @Entity 注解将其声明为 JPA 的实体类,使用 @Table 注解映射到数据库中的表。使用 @Id 注解声明主键字段,并使用 @GeneratedValue 注解设置主键生成策略。其他字段使用 @Column 注解定义字段名称、是否可为空等信息。

创建 DAO 接口

使用 Spring Data JPA 来操作实体类,需要创建一个 DAO 接口,并继承 JpaRepository 接口。以下是一个简单的 DAO 接口:

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}

在接口上添加 @Repository 注解,声明它是一个 DAO 接口。并使用 JpaRepository 接口操作实体类,其中 Employee 表示实体类型,Long 表示主键类型。

创建 Service 类

创建 Service 类用于实现业务逻辑。以下是一个简单的 Service 类:

@Service
public class EmployeeService {

   @Autowired
   private EmployeeRepository employeeRepository;

   public List<Employee> getAllEmployees() {
      return employeeRepository.findAll();
   }

   public Employee getEmployeeById(Long id) {
      return employeeRepository.findById(id).orElse(null);
   }

   public Employee saveEmployee(Employee employee) {
      return employeeRepository.save(employee);
   }

   public void deleteEmployeeById(Long id) {
      employeeRepository.deleteById(id);
   }
}

在 Service 类上添加 @Service 注解,声明它是一个服务类。在类中注入 EmployeeRepository 对象,并实现增删改查的方法,其中 findAll() 方法用于获取所有数据,findById() 方法用于根据 ID 获取数据,save() 方法用于创建或更新数据,deleteById() 方法用于删除数据。

创建 Controller 类

创建 Controller 类用于处理 HTTP 请求。以下是一个简单的 Controller 类:

@RestController
@RequestMapping("/api/v1")
public class EmployeeController {

   @Autowired
   private EmployeeService employeeService;

   @GetMapping("/employees")
   public List<Employee> getAllEmployees() {
      return employeeService.getAllEmployees();
   }

   @GetMapping("/employees/{id}")
   public Employee getEmployeeById(@PathVariable Long id) {
      return employeeService.getEmployeeById(id);
   }

   @PostMapping("/employees")
   public Employee createEmployee(@RequestBody Employee employee) {
      return employeeService.saveEmployee(employee);
   }

   @PutMapping("/employees/{id}")
   public Employee updateEmployee(@PathVariable Long id, @RequestBody Employee employee) {
      Employee emp = employeeService.getEmployeeById(id);
      if (emp != null) {
         emp.setName(employee.getName());
         emp.setGender(employee.getGender());
         emp.setDepartment(employee.getDepartment());
         emp.setAge(employee.getAge());
         return employeeService.saveEmployee(emp);
      }
      return null;
   }

   @DeleteMapping("/employees/{id}")
   public void deleteEmployeeById(@PathVariable Long id) {
      employeeService.deleteEmployeeById(id);
   }
}

在 Controller 类上添加 @RestController 注解,声明它是一个控制器类。在类中注入 EmployeeService 对象,并实现 REST API 的方法。其中 @GetMapping、@PostMapping、@PutMapping 和 @DeleteMapping 注解分别用于处理 GET、POST、PUT 和 DELETE 请求。@PathVariable 注解用于获取请求路径中的变量,@RequestBody 注解用于获取请求体中的数据。

测试CRUD操作

运行 Spring Boot 项目,并使用工具发送请求进行测试。以下是一个简单的测试:

  • GET /api/v1/employees 获取所有数据
  • GET /api/v1/employees/{id} 根据 ID 获取数据
  • POST /api/v1/employees 创建数据
  • PUT /api/v1/employees/{id} 根据 ID 更新数据
  • DELETE /api/v1/employees/{id} 根据 ID 删除数据

如果一切正常,你应该可以成功地进行 CRUD 操作。

总结

Spring Boot 提供了简单易用的 CRUD 操作支持。我们可以通过一些基本配置,实现数据的增删改查操作。在实际的开发过程中,我们可以根据具体的业务需求进行调整,更加灵活地使用 Spring Boot 进行开发。