mybatis根据用户id查询角色以及角色对应的权限

查询到的数据

{
    "name": "admin",
    "role": {
        "id": 1,
        "name": "管理员",
        "permissionList": [{
            "id": 1,
            "name": "总公司"
        }, {
            "id": 2,
            "name": "信息部"
        }]
    },
    "userId": 39
}

1.mapper文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<!--column:表示数据库中的字段列名;property:表示实体类对应的字段名-->
<mapper namespace="com.sqxinxibu.neikanhoutai.dao.UserDao" >
    <!--用户-->
    <!--<resultMap id="UserRolePermissionMap" type="UserRolePermission">-->
        <!--<result property="userId" column="id" />-->
        <!--<result property="name" column="name" jdbcType="VARCHAR"/>-->
        <!--<collection property="roleList" column="id" javaType="list" select="selectAllRoles"></collection>-->
        <!--<collection property="permissionList" column="id" javaType="list" select="selectAllpermissions"></collection>-->
    <!--</resultMap>-->
    <resultMap id="UserRolePermissionMap" type="UserRolePermission">
        <result property="userId" column="id" />
        <result property="name" column="name" jdbcType="VARCHAR"/>
        <collection property="role" column="id" javaType="com.sqxinxibu.neikanhoutai.entity.Roles" select="selectAllRoles"></collection>
    </resultMap>
    <!--权限-->
    <resultMap id="PermissionMap" type="com.sqxinxibu.neikanhoutai.entity.Permission" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
    </resultMap>
    <!--角色-->
    <resultMap id="RolesMap" type="com.sqxinxibu.neikanhoutai.entity.Roles" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <!--权限集合-->
        <collection property="permissionList" column="id" javaType="list" select="selectAllpermissions"></collection>
    </resultMap>
    <!--根据角色id查询权限(先从角色权限关联表查询角色id相等,在查询权限id,根据权限id在权限表里查询权限)-->
    <select id="selectAllpermissions" resultType="com.sqxinxibu.neikanhoutai.entity.Permission" parameterType="java.lang.Integer">
        select id,name from sys_menu where id in (select sys_role_menu.menu_id from sys_role_menu where sys_role_menu.role_id=#{id})
     </select>
    <!--根据用户中的角色查询角色-->
    <select id="selectAllRoles" resultMap="RolesMap" parameterType="java.lang.Integer">
        select id,name from sys_role where id in (select sys_user_role.role_id from sys_user_role where sys_user_role.user_id=#{id})
    </select>
    <select id="chaxunByUserId" resultMap="UserRolePermissionMap" parameterType="java.lang.Integer" >
            select * from  user where id=#{id}
    </select>


</mapper>

2.实体类:

2.1返回的实体类:

//用户返回对象
public class UserRolePermission {

        private int userId;
        private String name;

        private Roles role;

        public int getUserId() {
                return userId;
        }

        public void setUserId(int userId) {
                this.userId = userId;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public Roles getRole() {
                return role;
        }

        public void setRole(Roles role) {
                this.role = role;
        }
}

2.2:角色实体类:

//角色
public class Roles {

        private Integer id;

        private String name;

        private List<Permission> permissionList;

        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public List<Permission> getPermissionList() {
            return permissionList;
        }

        public void setPermissionList(List<Permission> permissionList) {
            this.permissionList = permissionList;
        }


        @Override
        public String toString() {
            return "Roles [id=" + id + ", name=" + name + ", permissionList=" + permissionList + "]";
        }


}

2.3权限实体类:

//权限
public class Permission {
    private Integer id;
    private String name;
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    @Override
    public String toString() {
        return "Permission{" +
                "id=" + id +
                ", name=" + name +
                '}';
    }
}

3.表结构:

3.1用户表:

mybatis根据用户id查询角色以及角色对应的权限

3.2角色表:
mybatis根据用户id查询角色以及角色对应的权限

 

3.3权限表:
mybatis根据用户id查询角色以及角色对应的权限

3.2用户和角色关联表:
mybatis根据用户id查询角色以及角色对应的权限

3.5角色和权限关联表:

mybatis根据用户id查询角色以及角色对应的权限

4.dao层:

public interface UserDao {
  
    //根据用户id查询角色和权限信息
    UserRolePermission chaxunByUserId(int id);

    //根据
}

5.service层:

@Service("userService")
public class UserServiceImpl implements UserService {

    @Resource
    private UserDao userDao;
 
    public UserRolePermission chaxunByUserId(int id){
        UserRolePermission userRolePermission=userDao.chaxunByUserId(id);
        System.out.println("查询到的用户信息==="+ JSON.toJSONString(userRolePermission));
        return  userRolePermission;
    }


}

6.controller层:

@RestController
public class IndexController {
   
    @Autowired
    private UserServiceImpl userService;

    @RequestMapping("/test")
    public String test(@RequestParam int userid){
        System.out.println("用户id==="+userid);
        UserRolePermission userRolePermission=userService.chaxunByUserId(userid);
        String json=JSON.toJSONString(userRolePermission);
        System.out.println("查询返回信息:"+ json);
        return  json;
    }
}