不设外键:来看看上次预留的连接查询接口

简介: postman接口测试你见过一个类中注入很多的bean吗?比如说像这样image这个是接着上次的文章,虽然也是用程序实习关联的一种解决方案再来看看Controller中的方法 (service中的方法就是上次文章中的方法...
img_9a887152c99b805607e787f205494995.png
postman接口测试

你见过一个类中注入很多的bean吗?比如说像这样


img_01861ce0a75047403e10420dd3e0d615.png
image

这个是接着上次的文章,虽然也是用程序实习关联的一种解决方案
再来看看Controller中的方法 (service中的方法就是上次文章中的方法体中的方法)

/**
     * 查询该用户下所有的权限
     */
    @RequestMapping("/queryauth")
    public List<String> queryUserAuthorities(User user){
        UserVo userVo = userService.queryAuth(user);
        List<String> authorityList = new ArrayList<>();
        HashSet<RoleVo> roleVos = userVo.getRoleVos();
        Iterator<RoleVo> iterator = roleVos.iterator();
        while (iterator.hasNext()){
            RoleVo next = iterator.next();
            HashSet<AuthorityVo> authorityVos = next.getAuthorityVos();
            Iterator<AuthorityVo> it = authorityVos.iterator();
            while (it.hasNext()){
                AuthorityVo authorityVo = it.next();
                authorityList.add(authorityVo.getAname());
            }
        }
        return authorityList;
    }

看起来是不是有点南辕北辙的感觉了,所以上次预留的连接查询的接口就有用了(这里有个细节就是在创建意义上的中间表的时候,具体请去查看上一篇文章)

测试结果:


img_ef32a8e4b2c1cf7752da8016542818b2.png
postman

Controller

 @RequestMapping("/selectauth")
    public List<Authority> selectUserAuthorities(User user){
        List<Authority> authorityList = userService.selectUserAuth(user);
        return authorityList;
    }

Service

 @Override
    public List<Authority> selectUserAuth(User user) {
        Integer uid = user.getUid();
        List<Authority> authorityList = new ArrayList<>();
        List<Integer> aids = userRoleMapper.selectUserAuth(uid);
        for (Integer id:aids
             ) {
            Authority authority = authorityMapper.getAuthorityById(id);
            authorityList.add(authority);
        }
        return authorityList;
    }

Mapper:

<select id="selectUserAuth" parameterType="INTEGER" resultType="integer">
        select t_role_authority.aid from t_user_role inner JOIN
       t_role_authority on t_user_role.rid = t_role_authority.rid where uid=#{uid};
    </select>

一样的实现了 查询该用户下拥有的所有权限

目录
相关文章
|
15天前
|
数据库 索引
11. 知道什么是回表查询嘛 ?
了解回表查询吗?当对表的`name`字段建立索引后,执行`SELECT name,age FROM user WHERE name=&#39;Alice&#39;`,数据库首先通过索引找到主键`id=18`,然后依据主键在主索引中获取完整数据记录,这个过程称为回表查询。由于需两次查找,其性能低于直接扫描索引树。
15 0
|
15天前
|
存储 关系型数据库 索引
10. 在一个非主键字段上创建了索引, 想要根据该字段查询到数据, 需要查询几次 ?
在非主键字段上创建索引,查询数据通常需两次。对于MyISAM,先通过索引找到数据行指针,再获取数据;而InnoDB则先找主键ID,再从主键索引中查找数据。
11 0
|
3月前
|
SQL Java 数据库
dts在数据迁移过程中,出现“无效的表或视图名”错误
dts在数据迁移过程中,如果出现“无效的表或视图名”错误
99 6
|
4月前
|
数据安全/隐私保护
离线表数据敏感字段自动id化处理
离线表数据敏感字段自动id化处理
47 0
|
10月前
|
缓存 NoSQL 前端开发
redis缓存不经常发生变化的数据-------从数据库中获得下拉列表的省份数据
redis缓存不经常发生变化的数据-------从数据库中获得下拉列表的省份数据
|
存储 SQL Java
Mysql数据库表字段设计优化(状态列)
初始状态码(java int 32 long 64),int 可以表示31种(除去0000),long可以表示63种(除去0000),当然不可能将0000赋值给初始状态,一般来讲,选择int还是long是根据具体业务需求来决定的。
394 0
Mysql数据库表字段设计优化(状态列)
|
Oracle 关系型数据库 数据库
OGG重新同步表
OGG在线重新同步表的步骤
227 0
|
SQL 关系型数据库 MySQL
paip.解决 数据库mysql增加列 字段很慢添加字段很慢
paip.解决 数据库mysql增加列 字段很慢添加字段很慢 环境如下: mysql5.6 数据仅仅3w alter table xxx add column yyy int default 0; 添加字段很慢,好几份中都没有好。
3765 0
|
数据可视化 NoSQL 关系型数据库
如何查看MySQL数据库状态及信息(内存、数据库、编码格式、表、列、索引等)
如何查看MySQL数据库状态及信息(内存、数据库、编码格式、表、列、索引等)
360 0
如何查看MySQL数据库状态及信息(内存、数据库、编码格式、表、列、索引等)
|
存储 SQL 关系型数据库
什么是回表查询
这种查询就必须先在索引文件中找到name为小张的索引节点,很明显这个节点里面只有id,因为这张表只有主键索引,再根据id去数据文件查找具体数据
242 0