流程 -> 客户端发起请求携带 角色id 后端服务器根据角色id 查询出角色自身信息以及相对应授权菜单的id
最终结果:
角色表: sys_roles
角色菜单表 : sys_role_menus
方案一(最简单的) ,性能略低:
业务层多次进行单表查询 先查角色自身信息 再查对应菜单授权 最后在业务层进行封装
pojo:
RoleMapper:
RolemenuMapper:
业务层:
@Override
public SysRoleMenu finById(Integer Id) {
// 参数校验
AssertUtil.isArgumentValid(Id == null || Id < 0, "请求参数有误");
// 先查询出角色自身信息封装到pojo
SysRoleMenu sysRoleMenu = sysRoleDao.findById(Id);
// 再查询出相对应的的菜单id封装到pojo中
List<Integer> menusIdByRoleId = sysRoleMenuDao.findMenusIdByRoleId(Id);
sysRoleMenu.setMenuIds(menusIdByRoleId);
return sysRoleMenu;
}
方案二
数据层嵌套查询
RoleMapper:
RoleMapper详解:
RolemenuMapper:
业务层:
默认情况下 通过结果集的Id进行嵌套查询 是做映射的 ,如果需要 可以进行手动主键映射
自定义手动映射 / 数据列名与pojo名不一样时 可以用:
<result property="name" column="name"/>