Jupyter AI

18 Spring Boot与数据库集成之数据库操作示例

📅 发表日期: 2024年8月15日

分类: 🌱Spring Boot 入门, 🌱Spring Boot 入门

👁️阅读: --

在上一篇文章中,我们讨论了如何配置数据源,以便让Spring Boot能够连接到数据库。在这篇文章中,我们将专注于如何在Spring Boot项目中实现数据库操作。我们将使用Spring Data JPA来简化数据库交互,并通过示例代码演示CRUD(创建、读取、更新、删除)操作。

项目结构

在开始之前,确保您的项目结构如下所示:

my-spring-boot-app
│
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           ├── demo
│   │   │           │   ├── DemoApplication.java
│   │   │           │   ├── entity
│   │   │           │   │   └── User.java
│   │   │           │   ├── repository
│   │   │           │   │   └── UserRepository.java
│   │   │           │   └── controller
│   │   │           │       └── UserController.java
│   │   └── resources
│   │       └── application.properties
└── ...

实体类

首先,我们需要创建一个实体类来映射数据库中的表。这里我们以User实体为例,它将包含用户的id和name。

// src/main/java/com/example/demo/entity/User.java
package com.example.demo.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    // Getters and setters
    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;
    }
}

在上述代码中,我们使用了@Entity注解来指示这是一个JPA实体类,@Id表示这是主键,@GeneratedValue表示主键的生成策略。

创建Repository接口

接下来,我们需要创建一个UserRepository接口,继承自Spring Data JPA的JpaRepository,以便我们能够进行CRUD操作。

// src/main/java/com/example/demo/repository/UserRepository.java
package com.example.demo.repository;

import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

通过继承JpaRepository,我们可以利用JPA提供的多种方法,例如save(), findAll(), findById(), deleteById()等。

创建Controller

现在,我们来创建一个控制器,以处理用户的HTTP请求并进行相应的数据库操作。

// src/main/java/com/example/demo/controller/UserController.java
package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

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

    @Autowired
    private UserRepository userRepository;

    // 创建用户
    @PostMapping
    public User createUser(@RequestBody User user) {
        return userRepository.save(user);
    }

    // 获取所有用户
    @GetMapping
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    // 根据ID获取用户
    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        Optional<User> user = userRepository.findById(id);
        return user.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
    }

    // 更新用户
    @PutMapping("/{id}")
    public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User userDetails) {
        Optional<User> userOptional = userRepository.findById(id);
        if (!userOptional.isPresent()) {
            return ResponseEntity.notFound().build();
        }
        User user = userOptional.get();
        user.setName(userDetails.getName());
        User updatedUser = userRepository.save(user);
        return ResponseEntity.ok(updatedUser);
    }

    // 删除用户
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
        if (!userRepository.existsById(id)) {
            return ResponseEntity.notFound().build();
        }
        userRepository.deleteById(id);
        return ResponseEntity.noContent().build();
    }
}

在上述代码中,我们创建了一个RESTful API来处理用户数据。监听的路由是/users,我们提供了创建、查询、更新和删除用户的功能。

测试接口

为了验证我们的接口是否正常工作,可以使用工具如Postman或curl进行测试:

  1. 创建用户:
curl -X POST -H "Content-Type: application/json" -d '{"name": "John Doe"}' http://localhost:8080/users
  1. 获取所有用户:
curl http://localhost:8080/users
  1. 根据ID获取用户:
curl http://localhost:8080/users/1
  1. 更新用户信息:
curl -X PUT -H "Content-Type: application/json" -d '{"name": "Jane Doe"}' http://localhost:8080/users/1
  1. 删除用户:
curl -X DELETE http://localhost:8080/users/1

小结

在本篇文章中,我们深入探讨了如何使用Spring Boot和Spring Data JPA创建数据库操作示例。我们创建了一个User实体类及其对应的Repository和Controller,使我们能够方便地执行CRUD操作。下篇文章我们将介绍Spring Boot的安全性以及如何通过Spring Security来保护我们的应用程序。这将为我们搭建安全的Web服务奠定基础。

接下来,让我们一起看看Spring Security简介