diff --git a/pom.xml b/pom.xml
index ac078c5..b3791f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,26 @@
spring-boot-starter-test
test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+
+
+ mysql
+ mysql-connector-java
+ runtime
+
+
+
+
+ org.springdoc
+ springdoc-openapi-ui
+ 1.6.14
+
@@ -46,4 +66,4 @@
-
\ No newline at end of file
+
diff --git a/src/main/java/com/example/demo/config/SwaggerConfig.java b/src/main/java/com/example/demo/config/SwaggerConfig.java
new file mode 100644
index 0000000..fbf0eb7
--- /dev/null
+++ b/src/main/java/com/example/demo/config/SwaggerConfig.java
@@ -0,0 +1,19 @@
+package com.example.demo.config;
+
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class SwaggerConfig {
+
+ @Bean
+ public OpenAPI customOpenAPI() {
+ return new OpenAPI()
+ .info(new Info()
+ .title("Demo API")
+ .version("1.0")
+ .description("用户信息管理接口"));
+ }
+}
diff --git a/src/main/java/com/example/demo/controller/UserController.java b/src/main/java/com/example/demo/controller/UserController.java
new file mode 100644
index 0000000..e8c773f
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/UserController.java
@@ -0,0 +1,56 @@
+package com.example.demo.controller;
+
+import com.example.demo.entity.User;
+import com.example.demo.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/users")
+public class UserController {
+
+ @Autowired
+ private UserService userService;
+
+ @GetMapping
+ public List list() {
+ return userService.findAll();
+ }
+
+ @GetMapping("/{id}")
+ public ResponseEntity getById(@PathVariable Long id) {
+ return userService.findById(id)
+ .map(ResponseEntity::ok)
+ .orElse(ResponseEntity.notFound().build());
+ }
+
+ @PostMapping
+ public User create(@RequestBody User user) {
+ return userService.save(user);
+ }
+
+ @PutMapping("/{id}")
+ public ResponseEntity update(@PathVariable Long id, @RequestBody User user) {
+ return userService.findById(id)
+ .map(existing -> {
+ existing.setName(user.getName());
+ existing.setEmail(user.getEmail());
+ existing.setAge(user.getAge());
+ return ResponseEntity.ok(userService.save(existing));
+ })
+ .orElse(ResponseEntity.notFound().build());
+ }
+
+ @DeleteMapping("/{id}")
+ public ResponseEntity delete(@PathVariable Long id) {
+ if (userService.findById(id).isPresent()) {
+ userService.deleteById(id);
+ return ResponseEntity.noContent().build();
+ } else {
+ return ResponseEntity.notFound().build();
+ }
+ }
+}
diff --git a/src/main/java/com/example/demo/entity/User.java b/src/main/java/com/example/demo/entity/User.java
new file mode 100644
index 0000000..e66dcca
--- /dev/null
+++ b/src/main/java/com/example/demo/entity/User.java
@@ -0,0 +1,61 @@
+package com.example.demo.entity;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "t_user")
+public class User {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ @Column(nullable = false)
+ private String name;
+
+ @Column(nullable = false)
+ private String email;
+
+ private Integer age;
+
+ public User() {
+ }
+
+ public User(String name, String email, Integer age) {
+ this.name = name;
+ this.email = email;
+ this.age = age;
+ }
+
+ 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;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+}
diff --git a/src/main/java/com/example/demo/repository/UserRepository.java b/src/main/java/com/example/demo/repository/UserRepository.java
new file mode 100644
index 0000000..db7caa4
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/UserRepository.java
@@ -0,0 +1,9 @@
+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 {
+}
diff --git a/src/main/java/com/example/demo/service/UserService.java b/src/main/java/com/example/demo/service/UserService.java
new file mode 100644
index 0000000..2f29240
--- /dev/null
+++ b/src/main/java/com/example/demo/service/UserService.java
@@ -0,0 +1,32 @@
+package com.example.demo.service;
+
+import com.example.demo.entity.User;
+import com.example.demo.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class UserService {
+
+ @Autowired
+ private UserRepository userRepository;
+
+ public List findAll() {
+ return userRepository.findAll();
+ }
+
+ public Optional findById(Long id) {
+ return userRepository.findById(id);
+ }
+
+ public User save(User user) {
+ return userRepository.save(user);
+ }
+
+ public void deleteById(Long id) {
+ userRepository.deleteById(id);
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 47fbb02..7b37a66 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,2 +1,16 @@
server:
- port: 8080
\ No newline at end of file
+ port: 8080
+
+spring:
+ datasource:
+ url: jdbc:mysql://localhost:3306/demo?useSSL=false&characterEncoding=utf8&serverTimezone=UTC
+ username: root
+ password: 123456
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ jpa:
+ hibernate:
+ ddl-auto: update
+ show-sql: true
+ properties:
+ hibernate:
+ dialect: org.hibernate.dialect.MySQL8Dialect