管理系统类毕设(四)---后端搭建详细说明

工欲善其事必先利其器
要想得数据必先有接口
这篇文章来带大家做后端

看本文之前 需要安装配置Java和Maven环境
了解SpringBoot
推荐看这篇文章之前先看
快速搭建一个后台

代码模板 已放置github
https://github.com/dmhsq/easy-Spring-Boot-demo
本文代码 已放置github
https://github.com/dmhsq/edusys

搭建项目

快速搭建一个后台

下载修改模板

代码模板 已放置github
https://github.com/dmhsq/easy-Spring-Boot-demo

快速搭建一个后台 文章中已经说明 如何搭建
我们直接拿模板来搭建
在这里插入图片描述下载后 解压
在这里插入图片描述
选择你的解压文件夹 ok即可
在这里插入图片描述

注意 模板得包名改不改都行 建议改成自己的 不然 就 开军舰!!哈哈
改的话 需要修改
在这里插入图片描述
在这里插入图片描述
注意 你的文件目录在这里插入图片描述

296.png)

根据你改的包名来修改 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
在这里插入图片描述

有问题可以下方留言,看到了会回复哦

猜你喜欢

转载自blog.csdn.net/qq_42027681/article/details/112427892
今日推荐