mybatis-plus n对n QueryWrapper实现代码

这段代码主要用于查询指定管理员ID对应的权限URL。首先,通过中间表admin_mid_role查询出管理员的所有角色ID,然后利用这些角色ID在admin_role_mid_perm表中查找所有权限ID,最后通过权限ID获取到具体的权限路径URL并返回。

先说一下代码场景 admin(工作人员) role(角色) persimmon(权限)

关系图:

 代码作用是:通过adminId去查询出他所有的权限路径url

代码实现:

 @Autowired
    private AdminPermissionMapper adminPermissionMapper;
    @Override
    public List<String> queryUrlByAdminId(Long adminId) {
        ArrayList<String> strings = new ArrayList<>();
        //1. 通过adminId根据admin_role中间表去查找出该工作人员所有的角色id
        //中间表 admin_mid_role 查出role_id
        String queryRoleId="select role_id from yqs.admin_mid_role where admin_id="+adminId;
        //2.查出了所有的角色之后 通过角色id去用role_permission中间表查出所有权限id
        //中间表 admin_role_mid_perm
        String queryPermissionId="select permission_id from yqs.admin_role_mid_perm where  role_id in ("+queryRoleId+")";
        //3.用权限id去查询所有权限
        QueryWrapper<AdminPermission> wrapper = new QueryWrapper<>();
        wrapper.select("url")
                .inSql("pk_id",queryPermissionId);
        List<AdminPermission> list = adminPermissionMapper.selectList(wrapper);
        list.stream()
                .filter(Objects::nonNull)
                .forEach(adminPermission -> strings.add(adminPermission.getUrl()));
        return strings;
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新生代农民工-小王八

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值