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日

相关文章

  • 详解Java使用JDBC连接MySQL数据库

    详解 Java 使用 JDBC 连接 MySQL 数据库 概述 在 Java 开发中,经常需要与 MySQL 数据库进行交互,而实现这个过程需要使用到 JDBC。JDBC(Java Database Connectivity)是 Java 提供的一套用于访问关系型数据库的接口,本文将详细讲解在 Java 中使用 JDBC 连接 MySQL 数据库的完整攻略。…

    Java 2023年5月19日
    00
  • java JSONArray 遍历方式(2种)

    下面我将为您详细讲解“java JSONArray 遍历方式(2种)”的完整攻略。 介绍 JSONArray 是Java中处理JSON格式数据的工具类,可以提供高效的处理JSON数据方式,并且支持多种遍历方式。本文将介绍Java中常用的两种JSONArray的遍历方式,包括for循环遍历方式和迭代器遍历方式。 前提 在使用JSONArray进行遍历之前,需要…

    Java 2023年5月26日
    00
  • c#和java base64不一致的解决方法

    下面是关于“c#和java base64不一致的解决方法”的完整攻略,介绍如何解决c#和Java在base64编码上的差异问题。 问题背景 在编写应用程序时,我们经常需要将一些数据进行加密或者传输,在这个过程中,经常会用到base64编码。然而,尽管c#和Java都有对应的base64编解码方法,但是两种语言在实现上略有区别,这就导致了c#和Java在使用相…

    Java 2023年5月19日
    00
  • Tomcat服务部署及优化的实现

    Tomcat服务部署及优化的实现 Tomcat作为一个基于Java的web应用服务器,它的部署和优化对于web应用的性能和稳定性至关重要。本文将介绍Tomcat服务部署及优化的实现攻略,包括以下步骤: 上传Tomcat压缩包并解压 配置Tomcat环境变量 启动Tomcat服务 部署web应用程序 Tomcat性能优化 上传Tomcat压缩包并解压 首先,我…

    Java 2023年5月19日
    00
  • 给JavaBean赋默认值并且转Json字符串的实例

    如何给JavaBean赋默认值并且转Json字符串的实例? 在大多数情况下,我们都会为JavaBean的每个属性提供默认值,这个过程十分繁琐并且容易出错。在这种情况下,为JavaBean提供默认值并将其转换为JSON字符串是至关重要的。 以下是实现这个策略的完整攻略: 为JavaBean赋默认值 下面是一个名为Person.java的JavaBean示例,其…

    Java 2023年5月26日
    00
  • 一篇文章轻松了解SpringBoot配置高级

    一篇文章轻松了解SpringBoot配置高级攻略 前言 SpringBoot是Spring家族的一种新生代成员,它通过简化配置和提供开箱即用的功能来提高生产力,已经成为最受欢迎的Java Web框架之一。然而,当面对更为复杂的应用场景时,SpringBoot的默认配置往往不能满足需求,需要开发者进行更加细致的配置。这篇文章就是为了帮助开发者深入理解和掌握Sp…

    Java 2023年5月15日
    00
  • spring boot 统一JSON格式的接口返回结果的实现

    下面我来详细讲解一下“Spring Boot 统一 JSON 格式的接口返回结果的实现”攻略。 1. 前言 在实际的项目中,我们往往需要为每个接口编写返回数据的格式,这样很浪费时间。而使用统一的 JSON 返回格式,不仅可以减少代码量,还能让前端开发更加便捷。本文将明确探讨在 Spring Boot 中如何实现这一目标。 2. 统一 JSON 格式的接口返回…

    Java 2023年5月26日
    00
  • java算法Leecode刷题统计有序矩阵中的负数

    Java算法Leetcode刷题是大多数Java程序员在提高自己的算法能力时所选择的途径之一。其中,《有序矩阵中的负数》是一道常见的算法题目。下面我将给出一份完整攻略,以便Java程序员能够更好地掌握这道题目。 题目描述 给定一个m*n的矩阵grid,其中每行和每列均已按非递增顺序排好序,请你统计并返回grid中 负数 的个数。 解题思路 因为矩阵已按照非递…

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