diff --git a/src/main/java/com/cloverta/webapi/controller/DemoController.java b/src/main/java/com/cloverta/webapi/controller/DemoController.java index 784abcc..48739f7 100644 --- a/src/main/java/com/cloverta/webapi/controller/DemoController.java +++ b/src/main/java/com/cloverta/webapi/controller/DemoController.java @@ -1,14 +1,14 @@ package com.cloverta.webapi.controller; -import com.cloverta.webapi.mapper.StudentMapper; import com.cloverta.webapi.model.Student; import com.cloverta.webapi.service.StudentService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/demo") @@ -23,4 +23,33 @@ public class DemoController { public List fetch() { return studentService.findAll(); } + + @PostMapping("/insert") + public ResponseEntity insert(@RequestParam String name, + @RequestParam(required = false) String email, + @RequestParam(required = false) String phone) { + Student student = new Student(); + student.setName(name); + student.setEmail(email); + student.setPhone(phone); + + if (studentService.insert(student)) { + // 成功返回201 Created和资源位置 + return ResponseEntity.status(HttpStatus.CREATED) + .header("Location", "/students/" + student.getId()) + .body(Map.of( + "status", "success", + "message", "学生创建成功", + "studentId", student.getId() + )); + } else { + // 失败返回500错误 + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(Map.of( + "status", "error", + "message", "学生创建失败", + "error", "数据库操作失败" + )); + } + } } diff --git a/src/main/java/com/cloverta/webapi/mapper/StudentMapper.java b/src/main/java/com/cloverta/webapi/mapper/StudentMapper.java index fd5de34..af77ee2 100644 --- a/src/main/java/com/cloverta/webapi/mapper/StudentMapper.java +++ b/src/main/java/com/cloverta/webapi/mapper/StudentMapper.java @@ -9,4 +9,6 @@ import java.util.List; public interface StudentMapper { List findAll(); + + void insert(Student student); } diff --git a/src/main/java/com/cloverta/webapi/service/StudentService.java b/src/main/java/com/cloverta/webapi/service/StudentService.java index 61221b7..f5d5b6f 100644 --- a/src/main/java/com/cloverta/webapi/service/StudentService.java +++ b/src/main/java/com/cloverta/webapi/service/StudentService.java @@ -16,4 +16,17 @@ public class StudentService { public List findAll() { return studentMapper.findAll(); } + + public boolean insert(Student student) { + if (student == null) { + return false; + } + + if (student.getName() == null) { + return false; + } + + studentMapper.insert(student); + return true; + } } diff --git a/src/main/resources/mapper/StudentMapper.xml b/src/main/resources/mapper/StudentMapper.xml index 78e03ec..bde8552 100644 --- a/src/main/resources/mapper/StudentMapper.xml +++ b/src/main/resources/mapper/StudentMapper.xml @@ -6,4 +6,12 @@ + + + INSERT INTO student ( + name, email, phone + ) VALUES ( + #{name}, #{email}, #{phone} + ) + \ No newline at end of file