项目总结---基于SpringBoot的宿舍管理系统

项目背景

  2020年7月6日开始了为期一周的软件工程课设。我带领着我们小组,和小张、小李进行了基于springboot的宿舍管理系统开发。很开心最后能够按期完成了预期设计功能,顺利收官。

项目介绍

宿舍管理系统参与者有两个,分别是宿舍管理员和学生用户:
  1.管理员用户:可以对所有的学生用户,公告信息进行增删改查,对维修信息进行更新状态和删除过时的维修信息。并且管理员可以查看所有宿舍的状态,即可以查看每个宿舍能够住几人,现已入住几人,还能入住几人。
  2.学生用户:可以查看所有公告信息,查看个人信息,查看本宿舍的宿舍信息,包含舍友信息,宿舍维修信息,并且能够向管理员申报维修信息。

遇到的问题

1.分用户登录之后的权限问题
2.一对多查询问题

解决方案

1.分用户登录之后的权限问题:
  对于这个问题本来是想通过SpringSecurity来写的,但是水平不够,没写出来,后来就用了笨方法,通过单选框实现分用户登录,之后的所有功能无论是相同的还是不同的都分用户身份写。

2.mybatis一对多查询问题:
  在项目实现过程中,多处用到了一对多查询,而这个问题也是我写这篇博客的主要原因,因此叙述的会稍微详细一些。
  持久层我使用的是mybatis,数据库使用的是mysql,查询用的是左外连接,老规矩这里先给出sql:

SELECT d.did,r.rid,r.info,r.state,r.date
FROM repairs r
LEFT OUTER JOIN  dormitory d
ON r.did = d.did
WHERE d.did = #{did}

写的时候sql和外键设置当然不是问题,问题是怎么在mybatis中使用一对多查询。下面会给出详细介绍:
1.确定在一对多的关系中,谁是一谁是多,在我这个例子中,每个宿舍会有多条维系信息,所以宿舍是一,宿舍维修信息是多,理清这个之后,在pojo的Dormitory中加入**private List repairs;**并为它写好get/set方法。
2.在RepairsMapper.xml中,写入如下代码:

<resultMap id="dormitoryRepairsMap" type="com.laoye.pojo.Dormitory">

        <id property="did" column="did"></id>
        <result property="dName" column="dname"></result>

        <collection property="repairs" ofType="com.laoye.pojo.Repair">
            <id property="rid" column="rid"></id>
            <result property="info" column="info"></result>
            <result property="state" column="state"></result>
            <result property="date" column="date"></result>
        </collection>

</resultMap>
<select id="findRepairByDid" parameterType="Integer" resultMap="dormitoryRepairsMap">
        SELECT d.did,r.rid,r.info,r.state,r.date
        FROM repairs r
        LEFT OUTER JOIN  dormitory d
        ON r.did = d.did
        WHERE d.did = #{did}
</select>

注意事项:需要用collection标签把从表的字段封装起来,collection标签中的property属性中写的是我们第一步中在Dormitory中加入**private List repairs;**的成员变量名。
最后,这个项目的源代码我会上传,供大家相互交流学习。

猜你喜欢

转载自blog.csdn.net/TreeCode/article/details/107294004