发布于 2026-01-06 8 阅读
0

Spring Boot + MySQL + Spring Data JPA:REST API CRUD 操作入门指南

Spring Boot + MySQL + Spring Data JPA:REST API CRUD 操作入门指南

介绍:

在现代 Web 开发领域,创建健壮且可扩展的 API 是一项基本任务。Spring Boot 是一个基于 Spring 框架构建的强大框架,它使开发人员能够更轻松快捷地开发出可用于生产环境的应用程序。

在本博客中,我们将使用服务层来处理业务逻辑并与存储库交互。这种方法有助于分离关注点,并提高代码库的可维护性和可测试性。我们将逐步介绍如何搭建开发环境、配置 MySQL 数据库、创建服务层、定义应用程序属性以及使用示例代码测试 API 端点。

Spring Boot项目高级架构图:

高层架构图描绘了 Spring Boot 应用内部的数据流和交互流程。它展示了前端 UI/Postman 如何与 Spring Boot API 通信,而 Spring Boot API 又如何与服务层和 Spring Data JPA 协同工作,从而对 MySQL 数据库执行 CRUD 操作。

先决条件:

  1. 具备Java和Spring Boot的基础知识。
  2. 熟悉 MySQL 数据库和 SQL 查询。
  3. 已安装 Java 开发工具包 (JDK)(版本 8 或更高版本)。
  4. 集成开发环境(IDE),例如 IntelliJ 或 Eclipse。

第一步:项目设置

让我们从创建一个新的 Spring Boot 项目开始:
图像

  1. 前往 Spring Initializr ( https://start.spring.io/ ) 或使用 IDE 的项目创建向导创建一个新的 Spring Boot 项目。
  2. 添加所需的依赖项:
    • Spring Web:提供构建 Web 应用程序所需的必要组件。
    • Spring Data JPA:使用 JPA(Java 持久化 API)简化数据库访问。
    • MySQL驱动程序:允许Spring Boot与MySQL数据库通信。
  3. 生成项目并将其导入到您的 IDE 中。

步骤 2:数据库配置

现在,我们来配置数据库以存储数据。在本例中,我们将使用 MySQL:

  1. 如果您尚未在本地计算机上安装 MySQL,请先安装。您可以从官方网站下载:https://dev.mysql.com/downloads/installer/
  2. 创建一个新的数据库和一个表来存储我们的数据。您可以使用像 phpMyAdmin 或 MySQL Workbench 这样的 MySQL 客户端来创建数据库和表。在这个例子中,我们创建一个名为“users”的表,其中包含“id”、“name”和“email”三列。

步骤 3:创建实体

在 Spring Boot 中,实体代表数据库中的一个表。让我们创建一个实体类来表示我们的“users”表:

// User.java
import javax.persistence.*;

@Entity
@Table(name = "users")
public class User {

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

    private String name;

    private String email;

    // Getters and setters 
}
Enter fullscreen mode Exit fullscreen mode

步骤 4:定义应用程序属性

application.properties(或 application.yml)文件允许我们配置 Spring Boot 应用程序的各种属性,包括数据库连接设置:

在“src/main/resources”文件夹中创建“application.properties”文件,并添加以下配置:

# Database Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
spring.datasource.username=your_database_username
spring.datasource.password=your_database_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Hibernate Configuration
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
Enter fullscreen mode Exit fullscreen mode

请确保将“your_database_name”、“your_database_username”和“your_database_password”替换为您的实际 MySQL 数据库凭据。

第五步:创建存储库

存储库接口为我们的实体提供了基本的 CRUD 操作。Spring Data JPA 会自动为我们实现这些操作:

// UserRepository.java
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {

}
Enter fullscreen mode Exit fullscreen mode

步骤 6:实现服务层

服务层包含业务逻辑,并与存储库协调以执行数据库操作。让我们为 API 创建服务类:

// UserService.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public User createUser(User user) {
        return userRepository.save(user);
    }

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    public User updateUser(Long id, User user) {
        user.setId(id);
        return userRepository.save(user);
    }

    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }
}
Enter fullscreen mode Exit fullscreen mode

步骤 7:创建控制器

控制器处理 HTTP 请求并调用服务方法。它与上一篇博客中的内容保持一致:

// UserController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.createUser(user);
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        return userService.updateUser(id, user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
    }
}
Enter fullscreen mode Exit fullscreen mode

步骤 8:运行应用程序

现在我们已经实现了服务层,让我们运行 Spring Boot 应用程序:

  1. 使用 IDE 的构建工具构建项目。
  2. 运行 Spring Boot 应用程序。
  3. 应用程序应该会启动,并且您应该会看到指示启动成功的日志消息。

步骤 9:测试 API 端点

要测试 API 端点,我们可以使用 Postman 或 cURL 等工具。让我们测试每个 CRUD 操作:

  1. 创建新用户:
-   Endpoint: POST  [http://localhost:8080/api/users](http://localhost:8080/api/users)
-   Request Body: { "name": "John Doe", "email": "[john@example.com](mailto:john@example.com)" }
Enter fullscreen mode Exit fullscreen mode
  1. 获取所有用户:
-   Endpoint: GET  [http://localhost:8080/api/users](http://localhost:8080/api/users)
Enter fullscreen mode Exit fullscreen mode
  1. 通过ID获取用户:
-   Endpoint: GET  [http://localhost:8080/api/users/1](http://localhost:8080/api/users/1)
Enter fullscreen mode Exit fullscreen mode
  1. 更新用户信息:
-   Endpoint: PUT  [http://localhost:8080/api/users/1](http://localhost:8080/api/users/1)
-   Request Body: { "name": "Updated Name", "email": "[updated@example.com](mailto:updated@example.com)" }
Enter fullscreen mode Exit fullscreen mode
  1. 删除用户:
-   Endpoint: DELETE  [http://localhost:8080/api/users/1](http://localhost:8080/api/users/1)
Enter fullscreen mode Exit fullscreen mode
文章来源:https://dev.to/abhi9720/a-beginners-guide-to-crud-operations-of-rest-api-in-spring-boot-mysql-5hcl