项目总结---基于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;**的成员变量名。
最后,这个项目的源代码我会上传,供大家相互交流学习。
这里是github项目地址
sql文件也已经推送到github上了,喜欢的同学点个赞呀,点个关注呀。

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

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值