操作指南*
任务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=UTCusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-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 {@TableIdprivate 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 {@Autowiredprivate StudentService studentService;@PostMappingpublic 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 {@Beanpublic 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 {@TableIdprivate 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或姓名为空的请求,观察错误提示
- 新增学生: