多表联查--五表联查

根据登陆的user查对应的menu


在提供的MyBatis查询中,涉及到5个表的联查,每个表和它们的关联关系如下:

  1. sys_menu (m):这是存储菜单信息的表,包含菜单的名称、路径、组件、权限标识、状态等字段。

  2. sys_role_menu (rm):这是一个关联表,用于存储角色和菜单之间的多对多关系。它将菜单ID(menu_id)和角色ID(role_id)关联起来。

  3. sys_user_role (ur):这是另一个关联表,用于存储用户和角色之间的多对多关系。它将用户ID(user_id)和角色ID(role_id)关联起来。

  4. sys_role (ro):这是存储角色信息的表,包含角色的名称、描述、状态等字段。

  5. sys_user (u):这是存储用户信息的表,包含用户的用户名、密码、状态等字段。

关联关系:

  • sys_menu 与 sys_role_menu:通过menu_id字段关联。sys_menu表的每一条记录可以通过menu_idsys_role_menu表中的记录匹配,以确定哪些角色可以访问特定的菜单项。

  • sys_role_menu 与 sys_user_role:通过role_id字段关联。sys_role_menu表的role_id可以与sys_user_role表中的role_id匹配,以确定哪些用户通过他们的角色可以访问特定的菜单。

  • sys_user_role 与 sys_role:通过role_id字段关联。sys_user_role表的role_idsys_role表的role_id匹配,可以获取角色的详细信息,例如角色的状态。

  • sys_user_role 与 sys_user:通过user_id字段关联。sys_user_role表的user_idsys_user表的user_id匹配,可以获取用户的详细信息。

联查的目的:

这个联查的目的是为了获取某个特定用户能够访问的菜单列表。它通过以下步骤实现:

  1. 确定用户的角色:通过sys_usersys_user_role表找到用户所拥有的角色。

  2. 确定角色可访问的菜单:通过sys_user_rolesys_role_menu表找到这些角色拥有的菜单权限。

  3. 过滤激活状态的菜单和角色:只选择激活状态的菜单和角色。

  4. 过滤目录和菜单类型:只选择类型为目录('M')或菜单('C')的记录。

  5. 排序:结果按父菜单ID和顺序号排序,以构建有层次结构的菜单。

通过这样的联查,可以确保最终得到的菜单列表是针对特定用户定制的,并且符合用户的角色权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值