JavaEE大作业-Springboot/Jpa/Mybatis/RESTful API 实现作业管理系统

作业管理系统

功能简介

在这里插入图片描述

这就是我们需要实现的功能。

下面我们创建一个新的项目,这是我给项目加的依赖 有Web Thymeleaf MybatisFramework MysqlDriver
在这里插入图片描述

创建好项目之后,我先做的是通过mybatis的自动生成功能,根据我的数据库来进行自动生成mapper,entity等。

首先介绍一下我的数据库

数据库整体:有四张表组成
在这里插入图片描述

提交作业的表s_student_homework在这里插入图片描述

作业表s_homework

在这里插入图片描述
学生表s_student
在这里插入图片描述

老师表s_teacher
在这里插入图片描述

创建完成数据库之后,我们就可以着手进行mybatis generator了
首先依赖与generator有关的东西

<plugins>
   <!-- mybatis代码生成插件 -->
   <plugin>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-maven-plugin</artifactId>
      <version>1.3.2</version>
      <configuration>
         <!--配置文件的位置-->
         <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
         <verbose>true</verbose>
         <overwrite>true</overwrite>
      </configuration>
      <executions>
         <execution>
            <id>Generate MyBatis Artifacts</id>
            <goals>
               <goal>generate</goal>
            </goals>
         </execution>
      </executions>
      <dependencies>
         <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
         </dependency>
      </dependencies>
   </plugin>
   <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
</plugins>

根据配置文件的位置我们建一个配置文件
generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!--mysql 连接数据库jar 这里选择自己本地位置;
    如果不知道maven本地仓库地址,可以使用EveryThing工具全局搜索mysql-connector-java,找到jar包位置;
    也可以手动下载一个jar放在指定位置,进行引用。
    -->
    <classPathEntry location="D:/server/maven/repository/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar"/>

    <context id="testTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自动生成的注释,true:是,false:-->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/school" userId="root"
                        password="123456">
        </jdbcConnection>
        <!-- 指定javaBean生成的位置
            targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制;
            targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录
         -->
        <javaModelGenerator targetPackage="com.example.mybatis.entity" targetProject="src/main/java">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false;如果多个数据库改为true分目录 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!--  指定mapper映射文件生成的位置
           targetPackage、targetProject同javaModelGenerator中作用一样-->
        <sqlMapGenerator targetPackage="com.example.mybatis.mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        <!-- 指定mapper接口生成的位置
         targetPackage、targetProject同javaModelGenerator中作用一样
         -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mybatis.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- 指定数据库表
        domainObjectName:生成的domain类的名字,当表名和domain类的名字有差异时一定要设置,如果不设置,直接使用表名作为domain类的名字;
        可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;
        -->
        <table schema="" tableName="s_student" domainObjectName="s_student"/>
        <table schema="" tableName="s_teacher" domainObjectName="s_teacher"/>
        <table schema="" tableName="s_homework" domainObjectName="s_homework"/>
        <table schema="" tableName="s_student_homework" domainObjectName="s_student_homework"/>

    </context>
</generatorConfiguration>

之后通过点击maven下的plugin按钮,就可以自动生成了
在这里插入图片描述

这样就产生了我们需要的entity和mapper

下面就是核心功能的实现。后端就是写service和serviceImp 利用example和cretiera的组合来进行你需要的操作。
实现好后端的server之后,在Control中写需要的页面跳转。并根据写好的service来实行一些操作。
由于本次使用的是thymeleaf,所以不能用@RestController 注解只能用@Controller注解,要不然跳转不过去相应的html界面。这也是需要注意的一点。

下面是项目结构
在这里插入图片描述
在这里插入图片描述

下面的好多html就是一些前端的页面。能提到的就是,为了让特定的学生根据学生ID得到自己写过的作业,来进行修改。所以在学生登录时读取了学生ID作为cookie。并在后来的展示作业函数中,以值传入进去,就得到了相应的作业列表。

这是html实现的存学生id cookie

<!DOCTYPE html>
<html  xmlns:th="http://www.thymeleaf.org">
<head>
    <style type="text/css">
        td, th {
            text-align: center;
        }
    </style>
    <title>学生登录</title>
    <script type="text/javascript">
        function SetCookie(cookieName,cookieValue) {
            document.cookie = cookieName + "=" + escape(cookieValue);

        }
        function slogin() {
            var s_id = $("s_id").value;
            var s_password = $("s_password").value;
            SetCookie("s_id",s_id);
        }
        function $(id) {
            return document.getElementById(id);
        }
    </script>
</head>
<body>

<div class="container">
    <center><h3>学生登录</h3></center>
    <form th:action="@{/student/Login}" method="post">

        <div class="form-group">
            <label for="s_id">学生Id:</label>
            <input type="text" class="form-control" id = "s_id" name="s_id" placeholder="请输入学生Id" th:field="${student.studentid}">
        </div>

        <div class="form-group">
            <label for="s_password">学生密码:</label>
            <input type="text" class="form-control" id="s_password" name="s_password" placeholder="请输入学生密码" th:field="${student.studentpassword}">
        </div>


        <div class="form-group" style="text-align: center">
            <a th:href="@{/student/Login}"> <input class="btn btn-primary"  type="submit" onclick="slogin()" value="提交"/></a>
            <a href="addHomework.html" th:href="@{/studentLogin}"> <input class="btn btn-default" type="reset" value="重置"/></a>
            <a href="list.html" th:href="@{/index.html}"> <input class="btn btn-default" type="button" value="返回"/></a>
        </div>

    </form>

    <form th:action="@{/studentRegister}" method="post" role="from" class="smart-green" >
        <input type="submit" class="button"  value="注册"/>
    </form>
</div>

</body>
</html>

以学生4登陆后,得到4写过的作业。并且可以进行修改。
在这里插入图片描述

下面展示程序效果

学生登陆界面
在这里插入图片描述

这是学生登陆后可进行的操作
在这里插入图片描述

学生查看/提交作业
在这里插入图片描述

学生想要修改已提交的作业

在这里插入图片描述

学生修改自己已提交过的作业成功:
在这里插入图片描述
这个页面是学生提交新的作业
在这里插入图片描述

学生提交新的作业成功:在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

老师登陆后可以添加新的作业/修改原有的作业在这里插入图片描述

在这里插入图片描述
新作业布置成功在这里插入图片描述

老师查看所有已提交的作业列表

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值