文章目录
- 每个用户 看到的已读和未读状态的公告都不一样的,只有管理员可以发布及新增公告
- 效果图
准备工作
数据库表
- 公告表,公告和员工的中间表,员工表(也就是后台登陆的用户)
Qo部分
- 配一个默认的当前用户作为属性,用于传入list控制器,每次访问公告,则更新使所有的公告内的当前用户属性为当前访问的用户,便于查询中间表
实体类部分
- 公告表这边的currentUser属性,用于代表后台的当前用户
- 为了查中间表用的
- 是否已读 取决于中间表中的see_read 而不是此实体类的
显示公告的控制器部分(list)
- 这里主要是query(qo)
查询公告的业务层方法
- 在分页前,将所有公告表内的当前用户属性设为当前用户的id,便于后续查询中间表
- 将所有公告表内的当前用户属性设为当前用户的id 的sql语句
- 查询公告表 显示在页面的 sql语句
- 这里的where 只需看第一行,其他都是过滤操作 可以不看
- 这里使用到了连表,公告表的当前用户的id也就是中间表的员工id,公告表的id也就是中间表的公告id,那么就能查出所对应的see_read(是否可读状态)了
- 中间表三个字段(公告表id,员工id,是否已读)
- 这里将中间表的see_read 封装进公告表的 see_read里面,即可在页面显示出,当前用户是否已读
点击查看按钮,则将未读设为已读
- 当前用户是否已读,直接看中间表对应的see_read
- 所以直接改中间表的see_read值为true即可
- 这里查看按钮 嵌套了2个值,一个是公告表id,一个是当前用户的id,那么就能求出对应的中间表 并且将see_read(是否已读)的值进行改变了
所对应的控制器
- 点击查看 将未读改为已读后 就跳转到查看的页面了
所用到的sql语句
如何新增公告,并在中间表关联所有的用户id
- 因为每个用户看公告的 已读和未读 都是不同的
- 所以公告新增的时候,需要在中间表关联每一个用户id
- 新增和编辑为同一个控制器
- 这里主要看判断notice.getId 为空的业务逻辑(新增的时候)
- 把数据库所有的用户id 放进集合里面,然后先新增公告,再新增中间表的关系
- 注意这里必须先新增公告,新增公告完后,此公告对象才有所属的id值
- 随后进行中间表新增关系的操作(传2个参数,一个是公告表id,一个是用户们的ids集合进去,在中间表则一波增加数据)
新增控制器部分
所用到的sql语句
- 每次新增都讲see_read(是否已读)值 设为0 ,默认未读状态即可
版权声明:本文为EDT777原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。