工欲善其事必先利其器
要想得資料必先有介面
這篇文章來帶大家做后端
看本文之前 需要安裝配置Java和Maven環境
了解SpringBoot
推薦看這篇文章之前先看
快速搭建一個后臺
代碼模板 已放置github
https://github.com/dmhsq/easy-Spring-Boot-demo
本文代碼 已放置github
https://github.com/dmhsq/edusys
學生管理系統后端開發
- 搭建專案
- 下載修改模板
- 撰寫物體類(在domain中)
- 學生類
- 教師類
- 考試類
- 成績類
- 撰寫資料訪問層(在dao)
- 學生資料查詢介面
- 教師資料查詢介面
- 考試資料查詢介面
- 考試成績資料查詢介面
- 撰寫業務層(在service)
- 查詢服務QueryService
- 增加和修改類似
- 撰寫介面(在控制層controller)
- 測驗
- 結尾
搭建專案
快速搭建一個后臺
下載修改模板
代碼模板 已放置github
https://github.com/dmhsq/easy-Spring-Boot-demo
快速搭建一個后臺 文章中已經說明 如何搭建
我們直接拿模板來搭建
下載后 解壓

選擇你的解壓檔案夾 ok即可

注意 模板得包名改不改都行 建議改成自己的 不然 就 開軍艦!!哈哈
改的話 需要修改


注意 你的檔案目錄

根據你改的包名來修改 HttpAspect檔案
以及 SwaggerConfig檔案的

撰寫物體類(在domain中)
省略的為 屬性 get set toString 代碼太長 影響觀看
學生類
需要 學號,姓名,年級,班級,所屬老師,老師手機號,家長,家長手機號,家庭住址
均為String型別 學號可能不是純數字 比如 YG111111等
學號為主鍵
記得快捷生成get set toString
package edusys.one.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* @Author: 張燦
* @Time: 2021/1/6 16:44
*/
@Entity
public class Student {
/**
* 學號
*/
@Id
private String userId;
/**
* 姓名
*/
private String userName;
省略,,,,,
}
教師類
需要 教師編號,姓名,手機號,家庭住址
教師編號為主鍵
記得快捷生成get set toString
package edusys.one.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* @Author: 張燦
* @Time: 2021/1/10 14:51
*/
@Entity
public class Teacher {
/**
* 教師編號
*/
@Id
private String teacherId;
/**
* 教師姓名
*/
private String teacherName;
省略,,,,,,
}
考試類
需要 考試編號,考試名,考試年級,考試具體說明,考試日期,考試負責老師
考試編號為主鍵
記得快捷生成get set toString
package edusys.one.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* @Author: 張燦
* @Time: 2021/1/10 15:09
*/
@Entity
public class Exam {
/**
* 考試編號
*/
@Id
private String examId;
/**
* 考試名
*/
private String examName;
省略,,,,,,
}
成績類
需要 學號,姓名,班級,考試名,科目成績
學號為主鍵
記得快捷生成get set toString
package edusys.one.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* @Author: 張燦
* @Time: 2021/1/10 15:22
*/
@Entity
public class Result {
/**
* 學號
*/
@Id
private String userId;
/**
* 學生姓名
*/
private String userName;
省略,,,,,
}
撰寫資料訪問層(在dao)
由于是操作Mysql 每個介面都繼承JpaRepository<類名,主鍵型別>
學生資料查詢介面
目前只額外增加了通過學號分頁查詢

package edusys.one.dao;
import edusys.one.domain.Student;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @Author: 張燦
* @Time: 2021/1/6 16:34
*/
public interface StudentRepository extends JpaRepository<Student,String> {
/**
* 分頁模糊查詢
* @param pageable
* @param string
* @return Pages
*/
Page<Student> findAllByUserIdLike(Pageable pageable, String string);
}
教師資料查詢介面
暫未添加額外介面
后會添加 通過幾個關鍵屬性 分頁查詢
一般通過老師名/編號查詢
package edusys.one.dao;
import edusys.one.domain.Teacher;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @Author: 張燦
* @Time: 2021/1/10 15:33
*/
public interface TeacherRepository extends JpaRepository<Teacher,String> {
}
考試資料查詢介面
暫未添加額外介面
后會添加 通過幾個關鍵屬性 分頁查詢
一般直接查詢 通過日期等等查詢
package edusys.one.dao;
import edusys.one.domain.Exam;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @Author: 張燦
* @Time: 2021/1/10 15:35
*/
public interface ExamRepository extends JpaRepository<Exam,String> {
}
考試成績資料查詢介面
暫未添加額外介面
后會添加 通過幾個關鍵屬性 分頁查詢
一般為 通過學生名查詢 還有班級 等等
package edusys.one.dao;
import edusys.one.domain.Result;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @Author: 張燦
* @Time: 2021/1/10 15:36
*/
public interface ResultRepository extends JpaRepository<Result,String> {
}
撰寫業務層(在service)
主要業務就是 查詢 修改 增加
所以 寫了三個檔案
查詢服務QueryService
package edusys.one.service;
import edusys.one.dao.ExamRepository;
import edusys.one.dao.ResultRepository;
import edusys.one.dao.StudentRepository;
import edusys.one.dao.TeacherRepository;
import edusys.one.domain.RespBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
/**
* @Author: 張燦
* @Time: 2021/1/10 15:40
*/
@Service
public class QueryService {
@Autowired
ExamRepository examRepository;
@Autowired
ResultRepository resultRepository;
@Autowired
StudentRepository studentRepository;
@Autowired
TeacherRepository teacherRepository;
public RespBean find(Integer type,String userId,String userName, String teacherId, String teacherName, String examName, String examDate, String classes, String grade, Integer currentPage, Integer pageSize){
if (currentPage<0){
currentPage = 1;
}
Pageable pageable = PageRequest.of(currentPage-1,pageSize);
Integer zero=0,one=1,two=2,three=3;
if (type.equals(zero)) {return findStudent(pageable,userId,userName,grade);}
else if (type.equals(one)) {return findTeacher(pageable,teacherId,teacherName);}
else if (type.equals(two)) {return findExam(pageable,examName,examName);}
else if (type.equals(three)) {return findResult(pageable,examName,userId,classes);}
else {return RespBean.error("失敗","失敗");}
}
/**
* 查詢學生
* @param pageable 分頁
* @param userId 學號
* @param userName 學生名
* @param grade 年級
* @return RespBean
*/
private RespBean findStudent(Pageable pageable,String userId,String userName,String grade){
return RespBean.ok("成功",studentRepository.findAllByUserIdLikeAndUserNameLikeAndGradeLike(pageable,userId+"%",userName+"%",grade+"%"));
}
/**
* 查詢老師
* @param pageable 分頁
* @param teacherId 老師編號
* @param teacherName 老師名
* @return RespBean
*/
private RespBean findTeacher(Pageable pageable,String teacherId,String teacherName){
return RespBean.ok("成功",teacherRepository.findAllByTeacherIdLikeAndTeacherNameLike(pageable,teacherId+"%",teacherName+"%"));
}
/**
* 查詢考試
* @param pageable 分頁
* @param examName 考試名
* @param examDate 考試日期
* @return RespBean
*/
private RespBean findExam(Pageable pageable,String examName,String examDate){
return RespBean.ok("成功",examRepository.findAllByExamNameLikeAndExamDateLike(pageable,examName+"%",examDate+"%"));
}
/**
*
* @param pageable 分頁
* @param examName 考試名
* @param userId 學號
* @param classes 班級
* @return RespBean
*/
private RespBean findResult(Pageable pageable,String examName,String userId,String classes){
return RespBean.ok("成功",resultRepository.findAllByExamNameLikeAndUserIdLikeAndClassesLike(pageable,examName+"%",userId+"%",classes+"%"));
}
}
增加和修改類似
代碼不再放上來 和查詢類似 文章系列最后一篇發布代碼
到現在的代碼 以及放置github
鏈接在文章結尾
撰寫介面(在控制層controller)
package edusys.one.controller;
import edusys.one.domain.RespBean;
import edusys.one.service.QueryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: 張燦
* @Time: 2021/1/6 16:30
*/
@CrossOrigin
@RestController
@Api(tags = "介面")
public class EduSysController {
private final static Logger logger = LoggerFactory.getLogger(EduSysController.class);
@Autowired
private QueryService queryService;
@GetMapping("/find")
@ApiOperation(value = "按頁查找所有資訊介面(支持模糊查詢)",notes = "介面說明:type型別0為學生1為老師2為考試3為成績," +
"查詢學生需要userId/userName/grade," +
"查詢老師需要teacherId/teacherName," +
"查詢考試需要examName/examDate," +
"查詢成績需要examName/userId/classes")
@ApiImplicitParams({
@ApiImplicitParam(name = "type",value = "型別",defaultValue = "0",required = true),
@ApiImplicitParam(name = "currentPage",value = "當前頁",defaultValue = "1"),
@ApiImplicitParam(name = "pageSize",value = "每頁大小",defaultValue = "5"),
@ApiImplicitParam(name = "userId",value = "學號"),
@ApiImplicitParam(name = "userName",value = "學生姓名"),
@ApiImplicitParam(name = "teacherId",value = "教師編號"),
@ApiImplicitParam(name = "teacherName",value = "教師姓名"),
@ApiImplicitParam(name = "examName",value = "考試名"),
@ApiImplicitParam(name = "examDate",value = "考試日期"),
@ApiImplicitParam(name = "classes",value = "班級"),
@ApiImplicitParam(name = "grade",value = "年級")
})
public RespBean Systest(@RequestParam("type") Integer type,
@RequestParam(name = "userId",required = false,defaultValue = "") String userId,
@RequestParam(name = "userName",required = false,defaultValue = "") String userName,
@RequestParam(name = "teacherId",required = false,defaultValue = "") String teacherId,
@RequestParam(name = "teacherName",required = false,defaultValue = "") String teacherName,
@RequestParam(name = "examName",required = false,defaultValue = "") String examName,
@RequestParam(name = "examDate",required = false,defaultValue = "") String examDate,
@RequestParam(name = "classes",required = false,defaultValue = "") String classes,
@RequestParam(name = "grade",required = false,defaultValue = "") String grade,
@RequestParam(name = "currentPage",required = false,defaultValue = "1") Integer currentPage,
@RequestParam(name = "pageSize",required = false,defaultValue = "5") Integer pageSize){
return queryService.find(type,userId,userName,teacherId,teacherName,examName,examDate,classes,grade,currentPage,pageSize);
}
}
測驗
專案運行后在
http://localhost:8086/edusys/swagger-ui.html
可測驗介面

結尾
除了鑒權外 專案目錄以及檔案不再變化
代碼已github上傳
https://github.com/dmhsq/edusys
剩余作業就是撰寫新增和修改
可自己嘗試
??大家好,我是代碼哈士奇,是一名軟體學院網路工程的學生,因為我是“狗”,狗走千里吃肉,想把大學期間學的東西和大家分享,和大家一起進步,但由于水平有限,博客中難免會有一些錯誤出現,有紕漏之處懇請各位大佬不吝賜教!暫時只在csdn這一個平臺進行更新,博客主頁:https://blog.csdn.net/qq_42027681,
未經本人允許,禁止轉載

后續會推出
前端:vue入門 vue開發小程式 等
后端: java入門 springboot入門等
服務器:mysql入門 服務器簡單指令 云服務器運行專案
python:推薦不溫卜火 一定要看哦
一些插件的使用等
大學之道亦在自身,努力學習,熱血青春
如果對編程感興趣可以加入我們的qq群一起交流:974178910

有問題可以下方留言,看到了會回復哦
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/247214.html
標籤:其他
上一篇:【保姆級教程】Spring Boot單元測驗(Controller層的Header處有Token驗證的詳細示例代碼),文末介紹Postman 的基本使用
下一篇:Redis為什么這么快
