动吧项目角色模块14

角色管理(角色页面分页的展示,新增,查询,修改操作)

角色业务分析及设计

角色菜单表

背景分析

任何一个权限管理子系统,它的设计中都会有一个角色管理的模块,角色通常会与系统资源有一个对应关系,不同角色可能有不同或相同资源的访问权限.核心业务分析在权限管理子系统中,本质上控制的是用户对资源的访问权限,但是在授权时,一般会先将资源(菜单)的访问权限授予角色(Role),然后再将角色授予用户,此时用户就相当于拥有了某些资源的访问权限.
具体角色表设计如下
在这里插入图片描述
角色和菜单是一种多对多关系(Many2Many),对于多对多的关系,其关系的维护方通常会在关系表中进行实现,其关系表的设计如下:
在这里插入图片描述
业务原型设计分析角色列表页面,如图所示:
在这里插入图片描述业务核心API设计分析POJO:
SysRoleDao: SysRoleDao,
SysRoleMenuDaoService: SysRoleService,
SysRoleServiceImplController: SysRoleController

角色列表数据查询设计及实现

业务分析

将数据库角色表中的数据,基于分页查询的需求查询数据,并在页面上进行呈现

服务端设计及实现

1.Pojo对象设计及实现

定义SysRole类型,基于此类型封装从数据库查询到的角色信息.关键代码如下
在这里插入图片描述
Dao对象设计及实现第一步:创建SysRoleDao,并定义角色分页查询方法,关键代码如下
在这里插入图片描述
第二步:创建SysRoleMapper.xml文件,并定义SQL分页查询映射,关键代码如下
在这里插入图片描述
Service对象设计及实现第一步:定义SysRoleService接口以及分页查询方法,关键代码如下
在这里插入图片描述

第二步:定义SysRoleService接口实现并重写分页查询方法,关键代码如下
在这里插入图片描述
Controller对象设计及实现第一步:定义SysRoleController及处理分页查询请求的方法,关键代码如下
在这里插入图片描述

角色添加页面数据的保存

业务分析在角色列表页面,点击添加按钮时进入角色添加页面,在添加页面中,输入要新增的角色信息以及要为角色赋予的权限信息(角色可访问的菜单),表单填写完成以后,点击save按钮,将数据异步提交到服务端
在这里插入图片描述

服务端设计及实现Dao 方法设计及定义

第一步:在SysRoleDao中添加用于新增角色信息的方法,关键代码如下:
int insertObject(SysRole entity);
第二步:在SysRoleMapper.xml文件中添加用于新增角色的SQL映射,关键代码如下
在这里插入图片描述

  1. useGeneratedKeys 表示要使用自增的主键值
    .2) keyProperty 表示要将自增主键值赋值给参数对象的哪个属性
    第三步:创建角色菜单关系表对应的Dao接口及新增方法,关键代码如下
    在这里插入图片描述
    第四步:创建角色菜单关系表对应的映射文件以及SQL映射,关键代码如下:
    在指定目录添加SysRoleMenuMapper.xml文件以及SQL映射
    在这里插入图片描述

Service 方法设计及实现

第一步:在SysRoleService接口中添加新增角色信息的方法,关键代码如下
int saveObject(SysRole entity,Integer[] menuIds);
第二步:在SysRoleServiceImpl中添加SysRoleMenuDao属性,关键代码如下:
@Autowired
private SysRoleMenuDao sysRoleMenuDao;
第三步:在SysRoleServiceImpl中重写新增角色的方法,关键代码如下:
在这里插入图片描述

Controller方法设计及实现

第一步:在SysRoleController中定义,处理角色新增请求的方法,关键代码如下:
在这里插入图片描述
假如客户端提交的数据为json格式,可以将方法中的参数封装到一个pojo对象中,然后使用@RequestBody注解描述(一个方法中只能使用一个@RequestBody注解)即可。

角色修改页面数据加载及呈现

业务分析

当点击角色列表页面的修改按钮时,我们要做哪些业务呢?如图所示
在这里插入图片描述
基于页面上的需求分析,我们在点击修改按钮时,需要基于id查询角色自身信息以及角色对应的关系数据,对于这样的需求,首先确定我们的数据来源(两张表),基于数据来源,我们给出解决方案如下:方案1:业务层向数据层发起两次单表查询请求,将两次查询结果在业务层进行封装。(最简单)方案2:业务层发起一次查询请求,数据层进行表关联查询?(两个表需要有对应的关系字段)方案3:业务层发起一次查询请求,数据层进行表嵌套查询? (数据层多次查询)

服务端设计及实现

Pojo 对象设计及实现

定义SysRoleMenu对象,用于封装基于id查询到的角色和菜单id信息,关键代码如下
在这里插入图片描述

方案2Dao 方法设计及实现

方案1:数据层两次单表查询(依次查询角色表和角色菜单关系表)
方案3: 数据层进行一次多表嵌套查询
方案2:数据层进行一次多表关联查询
第一步:在SysRoleDao中定义基于id查询角色信息的方法,关键代码如下(假如已有则无需再定义)
SysRoleMenu findById(Integer id);
第二步:在SysRoleMapper中添加基于角色id查询角色和菜单id的SQL映射,关键代码如下:
在这里插入图片描述
在这里插入图片描述
映射分析,如图所示:
在这里插入图片描述
说明:resultMap元素是mybatis中实现高级查询映射的一个元素,当表中字段名与pojo类中的属性不同或者是多表查询,嵌套查询时,一般都会使用resultMap元素进行自定义映射.

方案2Service 方法设计及实现

第一步:在SysRoleService接口中添加基于角色id查询角色以及菜单id的方法,关键代码如下
SysRoleMenu findById(Integer id);
第二步:在SysRoleServiceImpl类中添加基于角色id查询角色以及菜单id的方法实现,关键代码如下:
在这里插入图片描述

Controller 方法设计及实现

第一步:在SysLogController中添加基于id查询角色和菜单id的方法,关键代码如下
在这里插入图片描述
第二步:启动服务基于浏览器或postman进行访问测试,如图所示
在这里插入图片描述

总结(Summary)

重难点分析

在这里插入图片描述
FAQ 分析
在这里插入图片描述
BUG 分析
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值