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

简介: 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>

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

目录
相关文章
|
9月前
|
数据库 索引
11. 知道什么是回表查询嘛 ?
了解回表查询吗?当对表的`name`字段建立索引后,执行`SELECT name,age FROM user WHERE name=&#39;Alice&#39;`,数据库首先通过索引找到主键`id=18`,然后依据主键在主索引中获取完整数据记录,这个过程称为回表查询。由于需两次查找,其性能低于直接扫描索引树。
76 0
|
9月前
|
存储 关系型数据库 索引
10. 在一个非主键字段上创建了索引, 想要根据该字段查询到数据, 需要查询几次 ?
在非主键字段上创建索引,查询数据通常需两次。对于MyISAM,先通过索引找到数据行指针,再获取数据;而InnoDB则先找主键ID,再从主键索引中查找数据。
57 0
|
7月前
|
存储 关系型数据库 MySQL
如何获知表中数据被删除
如何获知表中数据被删除
64 4
|
8月前
|
SQL DataWorks 数据处理
DataWorks产品使用合集之假设存在时间戳字段: 假设源表有一个记录数据更新时间的字段,如何设置过滤条件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
39 1
update 批量更新某条数据时取最新、最大的一笔更新
update 批量更新某条数据时取最新、最大的一笔更新
111 0
|
9月前
|
数据库
数据库第二次作业 表的约束
数据库第二次作业 表的约束
42 0
|
算法 Java 关系型数据库
问题记录:msyql单个id查询出多条数据
在使用简单的select时,6个id却筛除了8条数据
161 0
问题记录:msyql单个id查询出多条数据
查出与当前系统时间间隔30分钟前后的数据
查出与当前系统时间间隔30分钟前后的数据
102 0
查出与当前系统时间间隔30分钟前后的数据
|
存储 SQL 关系型数据库
什么是回表查询
这种查询就必须先在索引文件中找到name为小张的索引节点,很明显这个节点里面只有id,因为这张表只有主键索引,再根据id去数据文件查找具体数据
293 0