基于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();
}
@