根据登陆的user查对应的menu
在提供的MyBatis查询中,涉及到5个表的联查,每个表和它们的关联关系如下:
-
sys_menu (m):这是存储菜单信息的表,包含菜单的名称、路径、组件、权限标识、状态等字段。
-
sys_role_menu (rm):这是一个关联表,用于存储角色和菜单之间的多对多关系。它将菜单ID(menu_id)和角色ID(role_id)关联起来。
-
sys_user_role (ur):这是另一个关联表,用于存储用户和角色之间的多对多关系。它将用户ID(user_id)和角色ID(role_id)关联起来。
-
sys_role (ro):这是存储角色信息的表,包含角色的名称、描述、状态等字段。
-
sys_user (u):这是存储用户信息的表,包含用户的用户名、密码、状态等字段。
关联关系:
-
sys_menu 与 sys_role_menu:通过
menu_id
字段关联。sys_menu
表的每一条记录可以通过menu_id
与sys_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_id
与sys_role
表的role_id
匹配,可以获取角色的详细信息,例如角色的状态。 -
sys_user_role 与 sys_user:通过
user_id
字段关联。sys_user_role
表的user_id
与sys_user
表的user_id
匹配,可以获取用户的详细信息。
联查的目的:
这个联查的目的是为了获取某个特定用户能够访问的菜单列表。它通过以下步骤实现:
-
确定用户的角色:通过
sys_user
和sys_user_role
表找到用户所拥有的角色。 -
确定角色可访问的菜单:通过
sys_user_role
和sys_role_menu
表找到这些角色拥有的菜单权限。 -
过滤激活状态的菜单和角色:只选择激活状态的菜单和角色。
-
过滤目录和菜单类型:只选择类型为目录('M')或菜单('C')的记录。
-
排序:结果按父菜单ID和顺序号排序,以构建有层次结构的菜单。
通过这样的联查,可以确保最终得到的菜单列表是针对特定用户定制的,并且符合用户的角色权限。