当前位置:   article > 正文

项目总结---基于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}
  • 1
  • 2
  • 3
  • 4
  • 5

写的时候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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

注意事项:需要用collection标签把从表的字段封装起来,collection标签中的property属性中写的是我们第一步中在Dormitory中加入**private List repairs;**的成员变量名。
最后,这个项目的源代码我会上传,供大家相互交流学习。
这里是github项目地址
sql文件也已经推送到github上了,喜欢的同学点个赞呀,点个关注呀。

因为很多小伙伴说这个项目有问题,跑起来点击登录会出现**Parameter ‘arg0’ not found.**的bug,解决办法如下:
1.更改LoginMapper接口
在这里插入图片描述
2.更改sql
在这里插入图片描述
不知道为什么,mapper文件里面的注释好像不生效,大家直接把sql重新写一下,把旧sql删掉好了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/473130
推荐阅读
相关标签
  

闽ICP备14008679号