springboot学生管理系统【纯干货分享,免费领源码】
发布人:shili8
发布时间:2025-02-24 21:36
阅读次数:0
**SpringBoot学生管理系统**
**前言**
本文将介绍如何使用Spring Boot构建一个基本的学生管理系统。该系统将包括以下功能:
* 学生信息管理(添加、删除、修改)
* 学生信息查询* 学生分页显示**项目结构**
首先,我们需要创建一个新的Spring Boot项目。我们选择Maven作为包管理器,Java8作为运行环境。
xml<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>student-management-system</artifactId> <version>0.0.1-SNAPSHOT</version> <name>student-management-system</name> <description>Demo project for Spring Boot</description> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
**实体类**
我们需要定义一个Student实体类来表示学生信息。
java@Entity@Table(name = "students") public class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, length =50) private String name; @Column(nullable = false, length =100) private String email; // getters and setters}
**DAO层**
我们需要定义一个StudentRepository接口来进行学生信息的CRUD操作。
javapublic interface StudentRepository extends JpaRepository{ }
**服务层**
我们需要定义一个StudentService类来封装业务逻辑。
java@Servicepublic class StudentService { @Autowired private StudentRepository studentRepository; public ListgetAllStudents() { return studentRepository.findAll(); } public Student getStudentById(Long id) { return studentRepository.findById(id).orElse(null); } public void addStudent(Student student) { studentRepository.save(student); } public void deleteStudent(Long id) { studentRepository.deleteById(id); } }
**控制器**
我们需要定义一个StudentController类来处理HTTP请求。
java@RestController@RequestMapping("/api/students") public class StudentController { @Autowired private StudentService studentService; @GetMapping public ListgetAllStudents() { return studentService.getAllStudents(); } @GetMapping("/{id}") public Student getStudentById(@PathVariable Long id) { return studentService.getStudentById(id); } @PostMapping public void addStudent(@RequestBody Student student) { studentService.addStudent(student); } @DeleteMapping("/{id}") public void deleteStudent(@PathVariable Long id) { studentService.deleteStudent(id); } }
**分页显示**
我们需要定义一个Pageable接口来进行分页显示。
javapublic interface Pageable { int getPageNumber(); int getPageSize(); Sort getSort(); } public class PageRequest implements Pageable { private int pageNumber; private int pageSize; private Sort sort; public PageRequest(int pageNumber, int pageSize) { this.pageNumber = pageNumber; this.pageSize = pageSize; } public int getPageNumber() { return pageNumber; } public int getPageSize() { return pageSize; } }
**分页显示控制器**
我们需要定义一个StudentController类来处理分页显示请求。
java@RestController@RequestMapping("/api/students") public class StudentController { @Autowired private StudentService studentService; @GetMapping public PagegetAllStudents(PageRequest pageable) { return studentService.getAllStudents(pageable); } }
**服务层**
我们需要定义一个StudentService类来封装业务逻辑。
java@Servicepublic class StudentService { @Autowired private StudentRepository studentRepository; public PagegetAllStudents(PageRequest pageable) { return studentRepository.findAll(pageable); } }
**DAO层**
我们需要定义一个StudentRepository接口来进行学生信息的CRUD操作。
javapublic interface StudentRepository extends JpaRepository, JpaSpecificationExecutor { } public class StudentSpecification implements Specification { private String name; public StudentSpecification(String name) { this.name = name; } @Override public Predicate toPredicate(Root root, CriteriaQuery> query, CriteriaBuilder cb) { return cb.like(root.get("name"), "%" + name + "%"); } }
**分页显示**
我们需要定义一个Pageable接口来进行分页显示。
javapublic interface Pageable { int getPageNumber(); int getPageSize(); Sort getSort(); } public class PageRequest implements Pageable { private int pageNumber; private int pageSize; private Sort sort; public PageRequest(int pageNumber, int pageSize) { this.pageNumber = pageNumber; this.pageSize = pageSize; } public int getPageNumber() { return pageNumber; } public int getPageSize() { return pageSize; } }
**分页显示控制器**
我们需要定义一个StudentController类来处理分页显示请求。
java@RestController@RequestMapping("/api/students") public class StudentController { @Autowired private StudentService studentService; @GetMapping public PagegetAllStudents(PageRequest pageable) { return studentService.getAllStudents(pageable); } }
**服务层**
我们需要定义一个StudentService类来封装业务逻辑。
java@Servicepublic class StudentService { @Autowired private StudentRepository studentRepository; public PagegetAllStudents(PageRequest pageable) { return studentRepository.findAll(pageable); } }
**DAO层**
我们需要定义一个StudentRepository接口来进行学生信息的CRUD操作。
javapublic interface StudentRepository extends JpaRepository, JpaSpecificationExecutor { } public class StudentSpecification implements Specification { private String name; public StudentSpecification(String name) { this.name = name; } @Override public Predicate toPredicate(Root root, CriteriaQuery> query, CriteriaBuilder cb) { return cb.like(root.get("name"), "%" + name + "%"); } }
**分页显示**
我们需要定义一个Pageable接口来进行分页显示。
javapublic interface Pageable { int getPageNumber(); int getPageSize(); Sort getSort(); } public class PageRequest implements Pageable { private int pageNumber; private int pageSize; private Sort sort; public PageRequest(int pageNumber, int pageSize) { this.pageNumber = pageNumber; this.pageSize = pageSize; } public int getPageNumber() { return pageNumber; } public int getPageSize() { return pageSize; } }
**分页显示控制器**
我们需要定义一个StudentController类来处理分页显示请求。
java@RestController@RequestMapping("/api/students") public class StudentController { @Autowired private StudentService studentService; @GetMapping public PagegetAllStudents(PageRequest pageable) { return studentService.getAllStudents(pageable); } }
**服务层**
我们需要定义一个StudentService类来封装业务逻辑。
java@Servicepublic class StudentService { @Autowired private StudentRepository studentRepository; public PagegetAllStudents(PageRequest pageable) { return studentRepository.findAll(pageable); } }
**DAO层**
我们需要定义一个StudentRepository接口来进行学生信息的CRUD操作。
javapublic interface StudentRepository extends JpaRepository, JpaSpecificationExecutor { } public class StudentSpecification implements Specification { private String name; public StudentSpecification(String name) { this.name = name; } @Override public Predicate toPredicate(Root root, CriteriaQuery> query, CriteriaBuilder cb) { return cb.like(root.get("name"), "%" + name + "%"); } }
**分页显示**
我们需要定义一个Pageable接口来进行分页显示。
javapublic interface Pageable { int getPageNumber(); int getPageSize(); Sort getSort(); } public class PageRequest implements Pageable { private int pageNumber; private int