实现学生管理系统是一个常见的Web开发入门项目。下面我将基于Spring Boot框架,讲解如何实现一个简单的学生管理系统。
1. 环境准备
在开始之前,需要准备好以下软件或工具:
- JDK 1.8 或以上版本
- IntelliJ IDEA 或其他Java开发工具
- MySQL 数据库
- Maven 依赖管理工具
2. Spring Boot 项目初始化
- 在 IntelliJ IDEA 中选择 File->New->Project,选择Spring Initializr创建一个新的Spring Boot项目。
- 输入项目信息后,选择生成项目的依赖,可以选择 Web、JPA、MySQL等依赖。
- 等待 IDEA 生成项目骨架,初始化完成。
3. 数据库设计
在MySQL中创建一个名为student_management的数据库,包含以下两个表:
学生表
字段名 | 类型 | 描述 |
---|---|---|
id | bigint | 学生ID |
name | varchar(64) | 学生姓名 |
gender | varchar(2) | 性别 |
age | int | 年龄 |
成绩表
字段名 | 类型 | 描述 |
---|---|---|
id | bigint | 学生ID |
course | varchar(64) | 课程 |
score | int | 成绩 |
4. 实现学生管理接口
- 创建一个Student实体类,包含学生基本信息的字段和Getter/Setter方法
@Entity
@Data
public class Student {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
private String name;
private String gender;
private Integer age;
}
- 创建一个Student的JpaRepository,提供基本的CRUD方法
public interface StudentRepository extends JpaRepository<Student, Long> {
}
- 创建一个StudentController,实现学生信息的增删查改功能,代码如下:
@RestController
@RequestMapping("/student")
public class StudentController {
@Autowired
private StudentRepository studentRepository;
@PostMapping("/")
public Student createStudent(@RequestBody Student student){
return studentRepository.save(student);
}
@GetMapping("/{id}")
public Student getStudentById(@PathVariable Long id){
return studentRepository.findById(id).get();
}
@PutMapping("/{id}")
public Student updateStudent(@PathVariable Long id, @RequestBody Student student){
student.setId(id);
return studentRepository.save(student);
}
@DeleteMapping("/{id}")
public void deleteStudent(@PathVariable Long id){
studentRepository.deleteById(id);
}
@GetMapping("/")
public List<Student> getAllStudents(){
return studentRepository.findAll();
}
}
- 在resources/application.properties中配置与MySQL的连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/student_management?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.format_sql=true
- 启动应用,访问http://localhost:8080/student即可测试以上学生信息的增删查改接口。
5. 实现课程成绩接口(示例二)
- 创建一个Score实体类,包含成绩信息的字段和Getter/Setter方法
@Entity
@Data
public class Score {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
private String course;
private Integer score;
@ManyToOne
@JoinColumn(name = "student_id")
private Student student;
}
- 修改Student实体类,使Score与Student之间存在一对多的关系
@Entity
@Data
public class Student {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
private String name;
private String gender;
private Integer age;
@OneToMany(mappedBy = "student", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private List<Score> scores;
}
- 创建一个Score的JpaRepository
public interface ScoreRepository extends JpaRepository<Score, Long> {
List<Score> findByStudentId(Long studentId);
}
- 创建一个ScoreController,实现课程成绩的增删查改和查询某个学生的所有课程成绩等功能,代码如下:
@RestController
@RequestMapping("/score")
public class ScoreController {
@Autowired
private ScoreRepository scoreRepository;
@PostMapping("/")
public Score createScore(@RequestBody Score score){
return scoreRepository.save(score);
}
@GetMapping("/{id}")
public Score getScoreById(@PathVariable Long id){
return scoreRepository.findById(id).get();
}
@GetMapping("/")
public List<Score> getAllScores(){
return scoreRepository.findAll();
}
@GetMapping("/student/{id}")
public List<Score> getScoreByStudentId(@PathVariable Long id){
return scoreRepository.findByStudentId(id);
}
@PutMapping("/{id}")
public Score updateScore(@RequestBody Score score){
return scoreRepository.save(score);
}
@DeleteMapping("/{id}")
public void deleteScore(@PathVariable Long id){
scoreRepository.deleteById(id);
}
}
- 启动应用,访问http://localhost:8080/score可测试以上课程成绩的增删查改和查询某个学生的所有课程成绩接口。
至此,一个简单的学生管理系统的基本功能已经实现。通过此项目,我们不仅学会了Spring Boot项目的初始化、数据库设计,还学会了如何构建简单的REST API。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot实现学生管理系统 - Python技术站