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

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

项目结构

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 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操作。

1
2
3
4
5
6
7
8
9
10
// 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请求并进行相应的数据库操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// 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. 创建用户:
1
curl -X POST -H "Content-Type: application/json" -d '{"name": "John Doe"}' http://localhost:8080/users
  1. 获取所有用户:
1
curl http://localhost:8080/users
  1. 根据ID获取用户:
1
curl http://localhost:8080/users/1
  1. 更新用户信息:
1
curl -X PUT -H "Content-Type: application/json" -d '{"name": "Jane Doe"}' http://localhost:8080/users/1
  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简介

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

https://zglg.work/spring-boot-zero/18/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论