赞
踩
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删掉好了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。