第一步 SELECT ur.rid FROM users_roles ur WHERE ur.uid = ( SELECT u.id FROM users u WHEREu.username ='zhoudu')
第二步 SELECT u.username,r.role_name FROM roles r, users u WHERE r.role_id IN ( SELECT ur.rid FROM users_roles ur WHERE ur.uid = ( SELECT u.id FROM users u WHERE u.username ='zhoudu' )) AND u.username ='zhoudu';
第一步 SELECT ur.rid FROM users_roles ur WHERE ur.uid = ( SELECT u.id FROM users u WHEREu.username ='zhoudu') 第二步 SELECTDISTINCT rp.pid, p.permission_code, p.permission_name, u.username FROM roles_permissions rp, permissions p, users u WHERE rp.rid IN ( SELECT ur.rid FROM users_roles ur WHERE ur.uid = ( SELECT u.id FROM users u WHERE u.username ='zhoudu' )) AND p.permission_id = rp.pid AND u.username ='zhoudu';
SELECT u.username, r.role_name FROM users u INNERJOIN users_roles ur ON u.id = ur.uid INNERJOIN roles r ON r.role_id = ur.rid WHERE u.username ='zhoudu';
通过username查询权限信息,关联5张表
1 2 3 4 5 6 7
select u.username, p.permission_code from users u innerjoin users_roles ur on u.id=ur.uid innerjoin roles r on r.role_id=ur.rid innerjoin roles_permissions rp on rp.rid=r.role_id innerjoin permissions p on p.permission_id=rp.pid where u.username='zhoudu';
publicinterfacePermissionDao { public Set<String> queryPermissionCodeByUsername(String username); }
PermissionMapper
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mappernamespace="com.example.springbootandshiro.dao.PermissionDao"> <selectid="queryPermissionCodeByUsername"resultSets="java.util.Set"resultType="string"> select p.permission_code from users u inner join users_roles ur on u.id=ur.uid inner join roles r on r.role_id=ur.rid inner join roles_permissions rp on rp.rid=r.role_id inner join permissions p on p.permission_id=rp.pid where u.username=#{username}; </select> </mapper>