基于Spring Boot的宿舍管理系统

简介

宿舍管理系统是用于管理学生宿舍信息的系统,可以方便地管理学生信息、宿舍楼信息、宿舍房间信息以及宿舍报修等功能。本文将基于Spring Boot框架来实现一个简单的宿舍管理系统,并提供代码示例。

技术栈

本系统将使用以下技术栈来实现:

  • Spring Boot:基于Java的开发框架,提供了快速构建应用程序的能力。
  • Spring Data JPA:基于Spring框架的数据访问层,提供了方便的数据库操作方法。
  • MySQL:关系型数据库,用于存储宿舍管理系统的数据。
  • Thymeleaf:Java模板引擎,用于生成动态网页。

数据库设计

首先,我们需要设计宿舍管理系统的数据库结构。在本系统中,我们将设计四个实体:学生(Student)、宿舍楼(Building)、宿舍房间(Room)和报修信息(Repair)。

-- 学生表
CREATE TABLE student (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  gender VARCHAR(10) NOT NULL,
  building_id INT,
  room_id INT,
  FOREIGN KEY (building_id) REFERENCES building(id),
  FOREIGN KEY (room_id) REFERENCES room(id)
);

-- 宿舍楼表
CREATE TABLE building (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL
);

-- 宿舍房间表
CREATE TABLE room (
  id INT PRIMARY KEY AUTO_INCREMENT,
  number INT NOT NULL,
  building_id INT,
  FOREIGN KEY (building_id) REFERENCES building(id)
);

-- 报修表
CREATE TABLE repair (
  id INT PRIMARY KEY AUTO_INCREMENT,
  description TEXT,
  student_id INT,
  FOREIGN KEY (student_id) REFERENCES student(id)
);

后端实现

在后端实现中,我们将使用Spring Boot和Spring Data JPA来实现宿舍管理系统的业务逻辑和数据库操作。

首先,我们需要定义实体类。在com.example.dormmanage.entity包下创建以下实体类:

@Entity
@Table(name = "student")
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String gender;

    @ManyToOne
    @JoinColumn(name = "building_id")
    private Building building;

    @ManyToOne
    @JoinColumn(name = "room_id")
    private Room room;

    // 省略getter和setter方法
}

@Entity
@Table(name = "building")
public class Building {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @OneToMany(mappedBy = "building")
    private List<Room> rooms;

    // 省略getter和setter方法
}

@Entity
@Table(name = "room")
public class Room {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private Integer number;

    @ManyToOne
    @JoinColumn(name = "building_id")
    private Building building;

    // 省略getter和setter方法
}

@Entity
@Table(name = "repair")
public class Repair {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String description;

    @ManyToOne
    @JoinColumn(name = "student_id")
    private Student student;

    // 省略getter和setter方法
}

接下来,我们需要创建数据访问层(Repository)。在com.example.dormmanage.repository包下创建以下Repository接口:

@Repository
public interface StudentRepository extends JpaRepository<Student, Long> {
    // 省略自定义查询方法
}

@Repository
public interface BuildingRepository extends JpaRepository<Building, Long> {
    // 省略自定义查询方法
}

@Repository
public interface RoomRepository extends JpaRepository<Room, Long> {
    // 省略自定义查询方法
}

@Repository
public interface RepairRepository extends JpaRepository<Repair, Long> {
    // 省略自定义查询方法
}

最后,我们需要创建控制器(Controller)来处理前端请求和返回数据。在com.example.dormmanage.controller包下创建以下控制器类:

@RestController
@RequestMapping("/students")
public class StudentController {
    private final StudentRepository studentRepository;

    public StudentController(StudentRepository studentRepository) {
        this.studentRepository = studentRepository;
    }

    @GetMapping
    public List<Student> getAllStudents() {
        return studentRepository.findAll();
    }

    @