springboot实现学生管理系统

实现学生管理系统是一个常见的Web开发入门项目。下面我将基于Spring Boot框架,讲解如何实现一个简单的学生管理系统。

1. 环境准备

在开始之前,需要准备好以下软件或工具:

  • JDK 1.8 或以上版本
  • IntelliJ IDEA 或其他Java开发工具
  • MySQL 数据库
  • Maven 依赖管理工具

2. Spring Boot 项目初始化

  1. 在 IntelliJ IDEA 中选择 File->New->Project,选择Spring Initializr创建一个新的Spring Boot项目。
  2. 输入项目信息后,选择生成项目的依赖,可以选择 Web、JPA、MySQL等依赖。
  3. 等待 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. 实现学生管理接口

  1. 创建一个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;
}
  1. 创建一个Student的JpaRepository,提供基本的CRUD方法
public interface StudentRepository extends JpaRepository<Student, Long> {
}
  1. 创建一个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();
    }
}
  1. 在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
  1. 启动应用,访问http://localhost:8080/student即可测试以上学生信息的增删查改接口。

5. 实现课程成绩接口(示例二)

  1. 创建一个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;
}
  1. 修改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;
}
  1. 创建一个Score的JpaRepository
public interface ScoreRepository extends JpaRepository<Score, Long> {
    List<Score> findByStudentId(Long studentId);
}
  1. 创建一个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);
    }
}
  1. 启动应用,访问http://localhost:8080/score可测试以上课程成绩的增删查改和查询某个学生的所有课程成绩接口。

至此,一个简单的学生管理系统的基本功能已经实现。通过此项目,我们不仅学会了Spring Boot项目的初始化、数据库设计,还学会了如何构建简单的REST API。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot实现学生管理系统 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 用bat批处理实现163邮箱自动登陆的代码[已测]

    使用bat批处理实现网页自动化是一种高效的实现方式。下面是使用bat批处理实现163邮箱自动登陆的完整攻略及示例说明: 1. 准备工作 首先,需要在电脑上安装好以下两个工具: 安装好Chrome浏览器 安装好Chrome浏览器的Driver 其中,Chrome浏览器的Driver需要根据自己安装的Chrome版本来选择,可以在 https://npm.tao…

    Java 2023年6月16日
    00
  • 详解SpringMVC重定向传参数的实现

    接下来我将为你讲解“详解SpringMVC重定向传参数的实现”的完整攻略。 标题 介绍 在SpringMVC中,有时候需要在重定向跳转的时候把一些参数传递过去,以便在下一个请求中使用。本文将详细讲解如何在SpringMVC中实现重定向传参数。 实现步骤 第一步:使用RedirectAttributes添加Flash属性 SpringMVC提供了Redirec…

    Java 2023年6月15日
    00
  • 类加载器委托机制是如何工作的?

    以下是关于类加载器委托机制的完整使用攻略: 类加载器委托机制是什么? 类加载器委托机制是Java虚拟机(JVM)用来加载类的一种机制。当一个类需要被加载时,JVM会先委托给当前类加载器进行加载,如果当前类加载器无法加载该类,则会将该请求委托给父类加载器进行加载。父类加载器也无法加载该类,则会继续向上委托,直到顶层的父类加载器为止。如果顶层的父类加载器仍然无法…

    Java 2023年5月12日
    00
  • springboot整合redis修改分区的操作流程

    下面是关于“springboot整合redis修改分区的操作流程”的完整攻略: 操作流程 修改redis.conf文件 在redis.conf配置文件中搜索”hash-max-ziplist-entries”和“hash-max-ziplist-value”两个参数。这两个参数决定了Redis使用ziplist存储hash类型的数据结构时,ziplist中的…

    Java 2023年5月20日
    00
  • jspsmart文件上传与邮件发送的实例

    下面是关于“jspsmart文件上传与邮件发送的实例”的完整攻略。 1. 背景介绍 jspsmart是一个Java开发Web应用程序的基础框架,它提供了很多方便的方法和工具类。本文将重点讲解如何使用jspsmart实现文件上传和邮件发送的功能。 2. 文件上传 2.1 准备工作 在使用jspsmart实现文件上传功能之前,需要确保以下几点: 确保已经引入了j…

    Java 2023年6月15日
    00
  • JavaWeb实现学生信息管理系统(1)

    JavaWeb实现学生信息管理系统需要以下步骤: 1. 环境搭建 首先需要搭建好JavaWeb开发环境,包括JDK和IDE等工具,以及Tomcat服务器。可以参考相关教程进行安装配置。 2. 创建项目 在IDE中创建一个新的JavaWeb项目,并创建所需的数据库表。可以使用MySQL等关系型数据库进行创建,具体表结构可以根据实际需求进行设计。 3. 编写Ja…

    Java 2023年5月20日
    00
  • 一篇文章让你三分钟学会Java枚举

    学习Java枚举的完整攻略 什么是枚举? 枚举(Enum)是Java中的一种数据类型,它可以将一组有限个数的字符常量定义为可枚举的列表。 比如可以定义一个颜色的枚举类型: enum Color { RED, YELLOW, BLUE, GREEN } 枚举的特点 枚举中的每个枚举值都是一个常量,用大写字母表示 枚举类型通过Enum类实现,每个枚举值都是该类型…

    Java 2023年5月26日
    00
  • JVM对象创建和内存分配原理解析

    JVM对象创建和内存分配原理解析 在Java开发中,对象的创建和内存分配是非常重要的环节。这里我们详细讲解JVM对象创建和内存分配原理。 JVM对象创建原理 JVM在获取实例化的类的基础信息后,首先需要为对象分配内存。 然后JVM需要为这些内存块清零,这个过程也称作垃圾回收。 接下来,JVM会对对象进行初始化,这里指的是为对象的成员变量赋予默认值,而且这些默…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部