Springboot+Mybatis+html+restful API+docker应用:作业管理系统(Version2)

(结尾附有源码地址)

一、功能需求

在这里插入图片描述

二、关键技术

1.Spring boot

1.1什么是SpringBoot

Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适)。

1.2、SpringBoot四个主要特性

1、SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中;

2、自动配置:SpringBoot的自动配置特性利用了Spring4对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们;

3、命令行接口:(Command-line-interface, CLI):SpringBoot的CLI发挥了Groovy编程语言的优势,并结合自动配置进一步简化Spring应用的开发;

4、Actuatir:它为SpringBoot应用的所有特性构建一个小型的应用程序。但首先,我们快速了解每项特性,更好的体验他们如何简化Spring编程模型。

2.MyBatis

MyBatis 是一款优秀的 ORM(Object Relational Mapping,对象关系映射)框架,它可以通过对象和数据库之间的映射,将程序中的对象自动存储到数据库中。它是 Apache 提供的一个开源项目,之前的名字叫做 iBatis,2010 年迁移到了 Google Code,并且将名字改为我们现在所熟知的 MyBatis,又于 2013 年 11 月迁移到了 Github。

MyBatis 提供了普通 SQL 查询、事务、存储过程等功能,它的优缺点如下。

优点:
a) 相比于 JDBC 需要编写的代码更少
b) 使用灵活,支持动态 SQL
c) 提供映射标签,支持对象与数据库的字段关系映射

缺点:
a) SQL 语句依赖于数据库,数据库移植性差
b) SQL 语句编写工作量大,尤其在表、字段比较多的情况下
总体来说,MyBatis 是一个非常优秀和灵活的数据持久化框架,适用于需求多变的互联网项目,也是当前主流的 ORM 框架。

2.1 MyBatis 重要组件
MyBatis 中的重要组件如下:
Mapper 配置:用于组织具体的查询业务和映射数据库的字段关系,可以使用 XML 格式或 Java 注解格式来实现;
Mapper 接口:数据操作接口也就是通常说的 DAO 接口,要和 Mapper 配置文件中的方法一一对应;
Executor:MyBatis 中所有的 Mapper 语句的执行都是通过 Executor 执行的;
SqlSession:类似于 JDBC 中的 Connection,可以用 SqlSession 实例来直接执行被映射的 SQL 语句;
SqlSessionFactory:SqlSessionFactory 是创建 SqlSession 的工厂,可以通过 SqlSession openSession() 方法创建 SqlSession 对象。
2.2 MyBatis 执行流程
MyBatis 完整执行流程如下图所示:
在这里插入图片描述
MyBatis 执行流程说明:
1.首先加载 Mapper 配置的 SQL 映射文件,或者是注解的相关 SQL 内容。
2.创建会话工厂,MyBatis 通过读取配置文件的信息来构造出会话工厂(SqlSessionFactory)。
3.创建会话,根据会话工厂,MyBatis 就可以通过它来创建会话对象(SqlSession),会话对象是一个接口,该接口中包含了对数据库操作的增、删、改、查方法。
4.创建执行器,因为会话对象本身不能直接操作数据库,所以它使用了一个叫做数据库执行器(Executor)的接口来帮它执行操作。
5.封装 SQL 对象,在这一步,执行器将待处理的 SQL 信息封装到一个对象中(MappedStatement),该对象包括 SQL 语句、输入参数映射信息(Java 简单类型、HashMap 或 POJO)和输出结果映射信息(Java 简单类型、HashMap 或 POJO)。
6.操作数据库,拥有了执行器和 SQL 信息封装对象就使用它们访问数据库了,最后再返回操作结果,结束流程。

三、系统设计

数据库表结构

总共有四张表
在这里插入图片描述
1.s_homework表(老师发布作业记录表)
在这里插入图片描述
2.s_student表(学生信息表)
在这里插入图片描述
3.s_student_homework表(学生提交作业记录表)
在这里插入图片描述
4.s_teacher表(老师信息表)
在这里插入图片描述

代码框架

在这里插入图片描述

数据实体类(Model)

新建四个类(Homework类、Sudent类、StudentHomework类、Teacher类)。这样可以将表中的一条记录抽象成java中的一个对象。详情了解对象关系映射。
在这里插入图片描述
每个类里面主要是申明与数据库对应的变量。结构类似于:

private Long id;
数据库映射类(dao)

1.HomeworkDao接口
该接口中有3个方法

  • addHomework(Homework h)
  • editHomework(Long homeworkId, Long num)
  • List selectAll3()

2.StudentDao接口
该接口中有4个方法

  • addStudent()
  • deleteStudent()
  • List find2(Long studentId)
  • List selectAll2()

3.StudentHomeworkDao接口
该接口中有7个方法

  • addHomework(StudentHomework sh)
  • deleteHomework(Long studentId)
  • deleteHomework2(Long studentId,Long homeworkId)
  • editHomework(Long studentId, Long homeworkId, Long score)
  • StudentHomework find1(Long studentId, Long homeworkId)
  • List find4(Long homeworkId)
  • List selectAll1()

4.TeacherDao接口
该接口中有2个方法

  • List find3(Long id, String pw)
  • boolean addTeacher(Teacher t)
前端框架

前端采用之前开发使用的框架修改而成,包括css样式。

业务逻辑

一、首页
选择角色
在这里插入图片描述
这里的每一个按钮其实只是一个类似于超链接的东西,点击后会跳转到相应的注解类。

二、老师端
选择老师角色后进入老师端登录界面
在这里插入图片描述
如果老师还没有账号就先点击注册,会跳转到注册界面
在这里插入图片描述
如果已经注册,那么直接输入工号和密码,点击登录即可进入老师端的操作界面。
在这里插入图片描述
1.老师添加学生
点击添加学生按钮后进入添加学生界面。如图在上方显示所有学生信息,下方老师填写要添加的学生的学号和姓名,点击添加即可。在这里插入图片描述
2.老师删除学生
点击删除学生按钮后进入删除学生界面。
在这里插入图片描述
老师在要删除的学生右边点击删除按钮即可删除该名同学。

3.老师查看学生和作业列表
点击查看学生和作业列表按钮后进入查看学生和作业列表界面。如图上方显示学生列表,下方显示作业列表。
在这里插入图片描述

4.老师布置作业
点击布置作业按钮后进入布置作业界面。如图所示,会在界面上方先显示所有已经布置过的作业,然后再下方提供发布作业的内容,填好作业要求后点击布置即可。
在这里插入图片描述
5.老师检查作业
点击检查作业按钮后进入检查作业列表界面。
如图所示,界面会显示所有已经布置过的作业,包括作业号、作业题目、作业要求、创建时间、该作业已提交的个数,以及检查作业按钮。
在这里插入图片描述
老师在想检查的作业那点击检查,即可进入检查作业列表。界面上会出现所有关于该作业的提交情况,再点击检查即可批改作业。
在这里插入图片描述
老师批改完打好分数后点击提交即可。
在这里插入图片描述
三、学生端
选择学生角色后进入学生登录界面,由于老师添加学生时会自动注册学生账号,所以没做学生注册按钮。
在这里插入图片描述
上图是学生登录界面。学生输入学号后即可进入学生端操作界面。下面展示使用学号为17301001学生登录的情况。
如图所示,会在界面中显示所有已经布置的作业,并且显示该名同学各次作业的状态。有未提交和已提交两种状态。已提交中会显示分数,如果尚未批改则会显示null。
在这里插入图片描述

1.提交作业
对于未提交的作业,在右方点击提交按钮,即可进入提交作业界面。填写好作业内容后点击提交按钮即可。
在这里插入图片描述
2.更新作业
对于已提交的作业,可以点击更新按钮更新作业。填写好新的作业内容后点击提交会自动覆盖之前的所有提交内容。
在这里插入图片描述

四、Docker

由于我使用的是Windows版的Docker,因此安装教程在这里就不多赘述了,
在这里我就讲述一下我将项目打包生成image的过程:
首先进入项目目录,在idea中利用maven工具
在这里插入图片描述
先使用clean操作,清空下环境,然后再使用install操作将项目打成Jar包
在这里插入图片描述
重点讲述一下docker的相关命令,在下载好docker之后,在控制台中输入docker -v出现以下内容说明docker安装成功。
在这里插入图片描述
安装好docker后,在idea中,创建DockerFile文件,以下是我的DockerFile文件的内容:
在这里插入图片描述
然后配置Docker属性
在这里插入图片描述
在这里可以看到DockerFile中指定的是我们本地DockerFile文件的路径,Image tag指定的是我们要生成的image的标签,Container name指定我们容器的名字,都配置好之后就点击确定,然后开始运行DockerFile,或者使用docker插件点击build能自动执行操作。
在这里插入图片描述
在这里插入图片描述
这里可以看到生成的镜像,这时我们转到终端用docker images命令查看docker中的镜像信息的时候可以看到,已经存在我们刚刚生成的镜像了。
在这里插入图片描述
然后我们打下tag.
在这里插入图片描述
可以看到生成了另一个镜像id和之前的那个一样,只有名字不同。
最后我们登录远程服务器,并将打好标签的 image push到远程的服务端。
在这里插入图片描述
在这里插入图片描述
最终版本的镜像名为:17301137-hwsystemfinaldemo:0.0.1-SNAPSHOT
直接拉取下来,执行run命令即可。另外关于数据库的配置,这里没有整合进docker中,我提供了sql文件,直接在数据库中运行sql文件即可创建对应的数据库。

完整项目GitHub地址:https://github.com/gittxy/JavaEEFinalProject

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值