任务1: 环境搭建
1.1 创建Spring Boot项目
操作步骤:
使用IDEA创建项目:
- 打开IDEA →
File
→New
→Project
- 选择
Spring Initializr
→ 设置项目信息(Group、Artifact、Java版本) - 选择依赖:
Spring Web
、MySQL Driver
、MyBatis Plus
- 点击
Finish
生成项目
- 打开IDEA →
验证项目结构:
- 检查
pom.xml
中是否包含以下依赖:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3</version> </dependency> </dependencies>
- 检查
1.2 配置 application.yml
操作步骤:
- 在
src/main/resources
下创建application.yml
文件 - 输入以下内容(注意替换数据库名和密码):
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/student_db?useSSL=false&serverTimezone=UTC username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: id-type: auto
任务2: 数据库映射
2.1 创建学生表
操作步骤:
- 打开MySQL客户端(如Navicat或命令行)
- 执行以下SQL(注意修正原题中的SQL错误):
CREATE TABLE student ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, gender VARCHAR(10), age INT, major VARCHAR(50) );
- 插入测试数据(示例):
INSERT INTO student (name, gender, age, major) VALUES ('张三', '男', 20, '计算机科学'), ('李四', '女', 22, '软件工程');
2.2 编写 Student
实体类
操作步骤:
- 在
src/main/java/com/example/demo/entity
下创建Student.java
- 输入以下代码:
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("student") public class Student { @TableId private Long id; private String name; private String gender; private Integer age; private String major; }
任务3: 基础功能实现
3.1 创建Mapper接口
操作步骤:
- 在
src/main/java/com/example/demo/mapper
下创建StudentMapper.java
- 输入以下代码:
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface StudentMapper extends BaseMapper<Student> { }
3.2 实现Service层
操作步骤:
- 在
src/main/java/com/example/demo/service
下创建StudentService.java
- 输入以下代码:
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.demo.mapper.StudentMapper; import org.springframework.stereotype.Service; @Service public class StudentService extends ServiceImpl<StudentMapper, Student> { }
3.3 完成Controller方法
操作步骤:
- 在
src/main/java/com/example/demo/controller
下创建StudentController.java
- 输入以下代码:
import com.example.demo.entity.Student; import com.example.demo.service.StudentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/students") public class StudentController { @Autowired private StudentService studentService; @PostMapping public boolean addStudent(@RequestBody Student student) { return studentService.save(student); } @DeleteMapping("/{id}") public boolean deleteStudent(@PathVariable Long id) { return studentService.removeById(id); } @GetMapping("/{id}") public Student getStudent(@PathVariable Long id) { return studentService.getById(id); } }
任务4: 功能增强
4.1 分页查询
操作步骤:
- 在
src/main/java/com/example/demo/config
下创建MyBatisPlusConfig.java
- 输入以下代码(配置分页插件):
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }
- 在
StudentController
中添加分页方法:@GetMapping("/page") public Page<Student> getStudentsByPage( @RequestParam(defaultValue = "1") Integer current, @RequestParam(defaultValue = "10") Integer size) { Page<Student> page = new Page<>(current, size); return studentService.page(page); }
4.2 按专业查询
操作步骤:
- 在
StudentController
中添加方法:@GetMapping("/major/{major}") public List<Student> getByMajor(@PathVariable String major) { QueryWrapper<Student> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("major", major); return studentService.list(queryWrapper); }
任务5: 数据校验(选做)
5.1 添加依赖
操作步骤:
- 修改
pom.xml
添加依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
5.2 修改实体类
操作步骤:
- 修改
Student.java
:import javax.validation.constraints.*; @Data @TableName("student") public class Student { @TableId private Long id; @NotBlank(message = "姓名不能为空") private String name; private String gender; @Min(value = 18, message = "年龄不能小于18岁") @Max(value = 30, message = "年龄不能大于30岁") private Integer age; private String major; }
5.3 修改Controller
操作步骤:
- 在
StudentController
中修改addStudent
方法:@PostMapping public Result addStudent(@Valid @RequestBody Student student, BindingResult result) { if (result.hasErrors()) { return Result.error(result.getFieldError().getDefaultMessage()); } return Result.ok(studentService.save(student)); }
- 创建统一返回类
Result.java
:@Data public class Result { private Integer code; private String msg; private Object data; public static Result ok(Object data) { Result result = new Result(); result.setCode(200); result.setData(data); return result; } public static Result error(String msg) { Result result = new Result(); result.setCode(400); result.setMsg(msg); return result; } }
验证接口
操作步骤:
- 启动项目:运行
DemoApplication.java
- 使用Postman测试:
- 新增学生:
POST http://localhost:8080/students
{ "name": "王五", "gender": "男", "age": 25, "major": "人工智能" }
- 分页查询:
GET http://localhost:8080/students/page?current=1&size=10
- 按专业查询:
GET http://localhost:8080/students/major/计算机科学
- 校验测试:发送年龄为17或姓名为空的请求,观察错误提示
- 新增学生: