業務描述:css
經過用戶code查詢資源菜單,Mybatis中用子查詢查詢子級菜單,須要傳入用戶code進行查詢,用戶code爲登陸token獲取前端
表結構:java
表1:資源表 permission_infojson
表2:角色資源中間表 role_permissionurl
表3:用戶角色表中間表 member_rolespa
思路:3d
1. 經過用戶code連表查詢父類菜單codecode
2. 經過父類code查詢子菜單blog
3. 經過傳入用戶code查詢再次查詢用戶code,傳入子查詢token
4.子查詢再經過父類code和用戶code查詢用戶資源
實現:
<!--查詢用戶資源父類列表--> <resultMap id="queryUserPermissionMap" type="com.alibaba.fastjson.JSONObject"> <result column="permission_url" property="permissionUrl"/> <result column="permission_type" property="permissionType"/> <result column="permission_description" property="permissionDescription"/> <result column="permission_parent_code" property="permissionParentCode"/> <result column="permission_code" property="permissionCode"/> <collection property="children" column="{permissionParentCode=permission_parent_code,accountCode=accountCode}" javaType="List" select="queryUserPermissionChild"> <result column="permission_url" property="permissionUrl"/> <result column="permission_type" property="permissionType"/> <result column="permission_description" property="permissionDescription"/> <result column="permission_code" property="permissionCode"/> </collection> </resultMap> <select id="queryUserPermission" parameterType="Map" resultMap="queryUserPermissionMap"> SELECT permission_url, permission_type, permission_description , permission_parent_code , permission_code, (select account_code from member_role where account_code = #{accountCode} Limit 1) as accountCode FROM permission_info WHERE state = 1 AND is_menu = 1 AND permission_code IN ( SELECT permission_code FROM role_permission WHERE role_code IN ( SELECT role_code FROM member_role WHERE account_code = #{accountCode})) </select> <!--查詢用戶資源子類列表--> <select id="queryUserPermissionChild" parameterType="Map" resultType="com.alibaba.fastjson.JSONObject"> SELECT permission_url , permission_type , permission_description , permission_code FROM permission_info WHERE state = 1 AND is_menu = 1 AND permission_parent_code = #{permissionParentCode} AND permission_code IN ( SELECT permission_code FROM role_permission WHERE role_code IN ( SELECT role_code FROM member_role WHERE account_code = #{accountCode})) </select>
結果:
{ "msg": "成功", "errorCode": 400, "timestamp": 1603077313, "data": [ { "permissionType": 1, "permissionParentCode": "0", "children": [ { "permissionType": 1, "permissionUrl": "23232", "permissionCode": "6cc8ee8ae88d49ceadab8e0bba926a05", "permissionDescription": "系統管理" }, { "permissionType": 2, "permissionUrl": "ccccssss", "permissionCode": "40a03ff44c07436091b1982c12daa96e", "permissionDescription": "3" } ], "permissionUrl": "23232", "permissionCode": "6cc8ee8ae88d49ceadab8e0bba926a05", "accountcode": "c329bf698013445c9eb61bae67c14d80", "permissionDescription": "系統管理" }, { "permissionType": 2, "permissionParentCode": "505c11e9125d425d92aa1689c718b9a2", "children": [ { "permissionType": 2, "permissionUrl": "二級菜單地址111我QQ翁羣", "permissionCode": "9d4ffadcf2584752b438c0dbfef551ac", "permissionDescription": "分銷管理的名字暗示法as " } ], "permissionUrl": "二級菜單地址111我QQ翁羣", "permissionCode": "9d4ffadcf2584752b438c0dbfef551ac", "accountcode": "c329bf698013445c9eb61bae67c14d80", "permissionDescription": "分銷管理的名字暗示法as " }, { "permissionType": 2, "permissionParentCode": "0", "children": [ { "permissionType": 1, "permissionUrl": "23232", "permissionCode": "6cc8ee8ae88d49ceadab8e0bba926a05", "permissionDescription": "系統管理" }, { "permissionType": 2, "permissionUrl": "ccccssss", "permissionCode": "40a03ff44c07436091b1982c12daa96e", "permissionDescription": "3" } ], "permissionUrl": "ccccssss", "permissionCode": "40a03ff44c07436091b1982c12daa96e", "accountcode": "c329bf698013445c9eb61bae67c14d80", "permissionDescription": "3" } ] }
備註:記錄如今的方法,考慮子查詢直接獲取前端傳入參數