layuiAdmin后台框架以及动态权限(二)

之前写的ssm权限系统,不再赘述,由于之前的系统是由上到下,一层层查找封装的权限数据结构,系统性能不好,和数据库会有多次交互,下面介绍第二种方式:上一篇:layuiAdmin后台框架以及动态权限_源码杂录的博客-CSDN博客_layuiadmin

   /**
     * 根据角色,获取角色的权限
     * @param id
     * @return
     */
    public List<SysPermission> getPermissionListByRoleId(Integer id){
        List<SysPermission> s = sysRolePermissionDao.getAllPermissionByRoleId(id);
        List<SysPermission> permissionList = new ArrayList<>();
        for (SysPermission sysPermission : s) {
            if (sysPermission.getFatherId() == 0) {
                sortSysPermissionList(sysPermission,s);
                permissionList.add(sysPermission);
            }
        }
        return permissionList;
    }

    /**------------------由下到上的递归权限-------------------------------
     * 递归获取权限
     * @param sysPermission
     * @param permissionList
     */
    public  static void sortSysPermissionList(SysPermission sysPermission, List<SysPermission> permissionList) {

        List<SysPermission> permissionChildList = new ArrayList<>();
        for (SysPermission permission : permissionList) {
            if (permission.getFatherId()==sysPermission.getId()){
                permissionChildList.add(permission);
                sortSysPermissionList(permission,permissionList);
            }
        }
        if (sysPermission.getHasSon()==1){
            sysPermission.setChild(permissionChildList);
        }
    }

这样子做事一次把数据都取出来,然后在内存中处理数据,速度会提升不少!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值