# OneHourSpring **Repository Path**: aluvfy/OneHourSpring ## Basic Information - **Project Name**: OneHourSpring - **Description**: 本项目聚焦于 “快速实现” 与 “核心概念” ,在一小时内即可搭建一个结构清晰的学生信息管理系统。它重点演示了如何通过 转换器 (Converter) 优雅地实现实体与 DTO 之间的映射。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-09-22 - **Last Updated**: 2025-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: Spring, MySQL, Maven ## README # OneHourSpring - SpringBoot 快速入门 CRUD 项目 一个在一小时内快速搭建的 SpringBoot 增删改查演示项目。本项目展示了如何使用 SpringBoot 快速构建一个完整的 RESTful API 服务,是 SpringBoot 新手的理想入门项目。 ## 技术栈 - **后端框架**: Spring Boot 2.x - **项目构建**: Maven - **Java版本**: 8+ - **架构模式**: MVC + DTO + 服务层 ## 核心功能 本项目实现了对学生信息的完整 CRUD 操作: - **创建学生** (Create): 添加新学生记录 - **查询学生** (Read): 获取学生列表、根据ID查询学生 - **更新学生** (Update): 根据ID修改学生信息 - **删除学生** (Delete): 根据ID删除学生记录 ## 设计特点 1. **清晰的包结构**: 按功能模块划分包结构,便于代码组织和管理 2. **DTO模式应用**: 使用 DTO 隔离实体对象和接口传输对象 3. **统一响应格式**: 通过 Response 类统一 API 响应格式 4. **转换器设计**: 使用 Converter 实现实体与 DTO 之间的转换 5. **分层架构**: Controller -> Service -> Repository 的标准分层 ## 项目结构 ``` OneHourSpring/ ├── src/ │ └── main/ │ └── java/ │ └── com/example/onehourspring/ │ ├── OneHourSpringApplication.java # 应用启动类 │ ├── controller/ │ │ ├── StudentController.java # 学生控制器 │ │ └── TestController.java # 测试控制器 │ ├── service/ │ │ ├── StudentService.java # 学生服务接口 │ │ ├── StudentServiceImp.java # 学生服务实现 │ │ └── Response.java # 统一响应封装 │ ├── dataaccess/ │ │ ├── Student.java # 学生实体类 │ │ └── StudentRepository.java # 学生数据访问层 │ ├── dto/ │ │ └── StudentDTO.java # 学生数据传输对象 │ └── converter/ │ └── StudentConverter.java # 实体-DTO转换器 ├── resources/ │ └── application.properties # 应用配置文件 └── pom.xml # Maven 依赖配置 ``` ## 快速开始 ### 环境要求 - JDK 1.8 或更高版本 - Maven 3.6+ - IDE (推荐 IntelliJ IDEA) ### 运行步骤 1. **克隆项目** git clone https://gitee.com/your-username/OneHourSpring.git 2. **导入项目** 使用 IDEA 导入为 Maven 项目 3. **启动应用** 运行 `OneHourSpringApplication.java` 中的 main 方法 4. **访问应用** 应用启动后,访问: `http://localhost:8080` ### API 接口 | 方法 | 路径 | 描述 | 参数 | | :--- | :--- | :--- | :--- | | `GET` | `/api/students` | 获取所有学生列表 | 无 | | `GET` | `/api/students/{id}` | 根据ID获取学生 | `id` (路径变量) | | `POST` | `/api/students` | 创建新学生 | `StudentDTO` (请求体) | | `PUT` | `/api/students/{id}` | 更新学生信息 | `id` (路径变量), `StudentDTO` (请求体) | | `DELETE` | `/api/students/{id}` | 删除学生 | `id` (路径变量) | #### 请求示例 **创建学生 (POST /api/students)** ```json { "name": "李四", "age": 20, "email": "lisi@example.com", "major": "计算机科学" } ``` **响应示例** ```json { "code": 200, "message": "操作成功", "data": { "id": 1, "name": "李四", "age": 20, "email": "lisi@example.com", "major": "计算机科学", "createTime": "2024-01-01T10:00:00" } } ``` ## 核心代码展示 ### StudentController.java ```java @RestController @RequestMapping("/api/students") public class StudentController { @Autowired private StudentService studentService; @GetMapping public Response> getAllStudents() { List students = studentService.findAll(); return Response.success(students); } @PostMapping public Response createStudent(@RequestBody StudentDTO studentDTO) { StudentDTO createdStudent = studentService.createStudent(studentDTO); return Response.success(createdStudent); } } ``` ### StudentServiceImp.java ```java @Service public class StudentServiceImp implements StudentService { @Autowired private StudentRepository studentRepository; @Autowired private StudentConverter studentConverter; @Override public List findAll() { List students = studentRepository.findAll(); return studentConverter.toDtoList(students); } @Override public StudentDTO createStudent(StudentDTO studentDTO) { Student student = studentConverter.toEntity(studentDTO); Student savedStudent = studentRepository.save(student); return studentConverter.toDto(savedStudent); } } ``` ### StudentConverter.java ```java @Component public class StudentConverter { public StudentDTO toDto(Student student) { StudentDTO dto = new StudentDTO(); dto.setId(student.getId()); dto.setName(student.getName()); dto.setAge(student.getAge()); dto.setEmail(student.getEmail()); dto.setMajor(student.getMajor()); return dto; } public Student toEntity(StudentDTO dto) { Student student = new Student(); student.setName(dto.getName()); student.setAge(dto.getAge()); student.setEmail(dto.getEmail()); student.setMajor(dto.getMajor()); return student; } public List toDtoList(List students) { return students.stream() .map(this::toDto) .collect(Collectors.toList()); } } ``` ## 测试 运行项目测试: ```bash mvn test ``` 或在 IDE 中直接运行 `OneHourSpringApplicationTests.java` ## 学习价值 通过这个项目,你可以学习到: - SpringBoot 项目的快速搭建 - RESTful API 的设计与实现 - MVC 分层架构的实际应用 - DTO 模式的使用场景和优势 - 实体转换器的设计与实现 - 统一响应格式的处理 ## 项目特色 - ⚡ **快速上手**: 一小时内完成核心功能开发 - 🎯 **重点突出**: 专注于 CRUD 核心业务流程 - 📚 **学习友好**: 代码结构清晰,注释完整 - 🔧 **易于扩展**: 基于标准 SpringBoot 架构,便于功能扩展 ## 后续改进计划 - [ ] 集成 H2 或 MySQL 数据库 - [ ] 添加数据验证注解 - [ ] 实现异常处理机制 - [ ] 添加单元测试覆盖 - [ ] 集成 Swagger API 文档 - [ ] 添加分页查询功能 - [ ] 实现条件查询过滤 --- > 提示:这是一个教学演示项目,适合 SpringBoot 初学者学习和参考。 --- **🚀 快速开始你的 SpringBoot 之旅!** ```