关于springboot:用户角色菜单查询

多对多,依据用户id,查问用户的多个角色,同时查问每个角色下对应的菜单, 同时过滤出雷同的菜单

用户<–>角色, 角色<–>菜单, 多对多的关系

个别状况下, 菜单不过滤, 前端框架主动反复的数据会笼罩

办法一

@RequestMapping("getMenuByUserid")
    public List<MenuRoleView> getMenuByUserid(HttpServletRequest request){
        
        int userid = (int) request.getSession().getAttribute("userid");
        //依据userid查问登录用户的角色信息
        UserRoleViewExample userRoleViewExample=new UserRoleViewExample();
        Criteria criteria2 = userRoleViewExample.createCriteria();
        userRoleViewMapper.selectByExample(userRoleViewExample);
        criteria2.andUseridEqualTo(userid);
        List<UserRoleView> roleList = userRoleViewMapper.selectByExample(userRoleViewExample);
        List<Integer> roleIds=new ArrayList<Integer>();//角色id的汇合
        for (UserRoleView userRoleView : roleList) {
            roleIds.add(userRoleView.getRoleid());
        }
        
        
        //依据userid的汇合,查问
        MenuRoleViewExample menuRoleViewExample=new MenuRoleViewExample();
        com.bw.entity.MenuRoleViewExample.Criteria criteria = menuRoleViewExample.createCriteria();
        criteria.andRoleidIn(roleIds);
        List<MenuRoleView> menuList = menuRoleViewMapper.selectByExample(menuRoleViewExample);
        return menuList;
    }

办法二

@RequestMapping("getMenuByUserid2")
    public List<MenuRoleView> getMenuByUserid2(HttpServletRequest request){
        
        Integer userid = (Integer) request.getSession().getAttribute("userid");
        if(userid==null){
            return new ArrayList();
        }
        List<MenuRoleView> menuList = menuRoleViewMapper.getMenuByUserid2(userid);
        //工具类
        HashMap<Integer, MenuRoleView> map=new HashMap<Integer, MenuRoleView>();
        for (MenuRoleView menuRoleView : menuList) {
            map.put(menuRoleView.getMenuid(), menuRoleView);
        }
        Collection<MenuRoleView> values = map.values();
        menuList=new ArrayList<MenuRoleView>(values);
        return menuList;
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理