Spring Boot + MySQL中REST API CRUD操作的初学者指南
#api #mysql #springboot #crud

介绍:

在现代网络开发的世界中,创建强大而可扩展的API是一项基本任务。 Spring Boot是建立在弹簧框架之上的强大框架,使开发人员更容易快速开发可生产的应用程序。

在此博客中,我们将使用服务层来处理业务逻辑并与存储库进行交互。这种方法促进了关注点的分离,并增强了代码库的可维护性和可检验性。我们将详细介绍设置开发环境,配置MySQL数据库,创建服务层,定义应用程序属性以及使用示例代码测试API端点的分步过程。

Spring Boot项目高级体系结构图:

高级体系结构图描述了Spring Boot应用程序中数据和交互的流程。它说明了Frontend UI/Postman如何与Spring Boot API通信,该API与服务层和Spring Data JPA进一步协调以在MySQL数据库上执行CRUD操作。

image

先决条件:

  1. 对Java和Spring Boot的基本理解。
  2. 熟悉MySQL数据库和SQL查询。
  3. 安装了Java开发套件(JDK)(版本8或更高版本)。
  4. 诸如Intellij或Eclipse之类的集成开发环境(IDE)。

步骤1:设置项目

让我们首先创建一个新的春季启动项目:
image

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

步骤2:数据库配置

现在,让我们配置数据库以存储我们的数据。在此示例中,我们将使用mySQL:

  1. 如果还没有,请在本地计算机上安装MySQL。您可以从官方网站下载它:https://dev.mysql.com/downloads/installer/
  2. 创建一个新的数据库和一个存储我们数据的表。您可以使用MySQL客户端(例如PhpMyAdmin或MySQL Workbench)来创建数据库和表。在此示例中,让我们创建一个名为“用户”的表“用户”,“ id”,“ name”和“ email”。

步骤3:创建实体

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

// 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 
}

步骤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

确保用实际的mySQL数据库凭证替换“ yous_database_name”,“ your_database_username”和“ your_database_password”。

步骤5:创建存储库

存储库接口为我们的实体提供了基本的CRUD操作。春季数据JPA自动为我们实施这些操作:

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

public interface UserRepository extends JpaRepository<User, Long> {

}

步骤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);
    }
}

步骤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);
    }
}

步骤8:运行应用程序

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

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

步骤9:测试API端点

为了测试API端点,我们可以使用邮递员或卷发等工具。让我们测试每个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)" }
  1. 获取所有用户:
-   Endpoint: GET  [http://localhost:8080/api/users](http://localhost:8080/api/users)
  1. 通过ID获取用户:
-   Endpoint: GET  [http://localhost:8080/api/users/1](http://localhost:8080/api/users/1)
  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)" }
  1. 删除用户:
-   Endpoint: DELETE  [http://localhost:8080/api/users/1](http://localhost:8080/api/users/1)