Mybatis——权限管理小demo

权限管理的小案例

maven,webapp项目

重点步骤:
根据角色id找到角色,然后通过角色-权限关联表 找到 当前角色的权限;
然后根据user中的roleId找到角色;
这样就可以给个user找他的 相关 权限。

  1. pom.xml下载依赖包

  2. 项目 目录管理
    在这里插入图片描述

  3. 连接数据库,生成pojo

  4. 通过角色ID查询权限(中间表roleaccess)
    RoleAccessMapper.java

public interface RoleAccessMapper {
    /**
     * 通过角色ID查询权限
     */
    List<Access> findAccessByRoleId(Integer roleId);
}

RoleAccessMapper.xml

<mapper namespace="com.java201.dao.RoleAccessMapper">
    <resultMap id="roleAccessMap" type="Access">
        <id column="id" property="id"/>
        <result property="accessName" column="accessName"/>
        <result property="accessLevel" column="accessLevel"/>
        <result property="accessUrl" column="accessUrl"/>
        <result property="accessParentId" column="accessParentId"/>
    </resultMap>
    <select id="findAccessByRoleId" resultMap="roleAccessMap">
        select * from roleaccess ra left join access a on ra.accessId=a.id
        where ra.roleId=#{roleId}
    </select>
</mapper>
  1. 通过角色ID查询角色
    Role.java
public class Role {
  private Integer id;
  private String roleName;
  private String roleDesc;
  private Integer isSuper;
  /**
   * 角色拥有权限
   * @return
   */
  private List<Access> accesses;
  // (加上getter/setter方法)

RoleMapper.java

public interface RoleMapper {
    /**
     * 通过角色ID查询角色
     */
    Role findByRoleId(Integer id);
}

RoleMapper.xml

<mapper namespace="com.java201.dao.RoleMapper">
    <resultMap id="roleMap" type="Role">
        <id column="id" property="id"/>
        <result property="roleName" column="roleName"/>
        <result property="roleDesc" column="roleDesc"/>
        <result property="isSuper" column="isSuper"/>
        <!--  多对多-->
        <collection property="accesses" column="id" ofType="Access"
            select="com.java201.dao.RoleAccessMapper.findAccessByRoleId"/>
    </resultMap>

    <!--    通过角色id查询角色-->
    <select id="findByRoleId" resultMap="roleMap">
        select * from role where id=#{id}
    </select>
</mapper>
  1. 根据用户查询角色
    User.java中添加:
/**
  用户拥有的角色
   */
  private Role role;

UserMapper.java

public interface UserMapper {
    User findUserById(Integer id);
}

UserMapper.xml

<mapper namespace="com.java201.dao.UserMapper">
    <resultMap id="userMap" type="User">
        <id column="id" property="id"/>
        <result property="userName" column="userName"/>
        <result property="userName" column="userName"/>
        <result property="userPwd" column="userPwd"/>
        <result property="userPhone" column="userPhone"/>
        <result property="userAddTime" column="userAddTime"/>
        <result property="roleId" column="roleId"/>
        <!-- 一对一-->
        <association property="role" column="roleId" javaType="Role"
            select="com.java201.dao.RoleMapper.findByRoleId"/>
    </resultMap>
    <select id="findUserById" resultMap="userMap">
        select * from user where id=#{id}
    </select>
</mapper>
  1. 测试
public class MyBatisTest {
    /**
     * 角色关联权限
     */
    @Test
    public void test01() {
        SqlSession session = MybatisUtil.getSession();
        RoleMapper mapper = session.getMapper(RoleMapper.class);
        Role role = mapper.findByRoleId(6);
        System.out.println(role);
    }
    /**
     * 查询用户---角色----权限
     */
    @Test
    public void test02() {
        SqlSession session = MybatisUtil.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        User user = mapper.findUserById(4);
        System.out.println(user);
    }
}
  1. 结果
    在这里插入图片描述
    在这里插入图片描述
    注意:实体类都要添加重写toString方法
发布了79 篇原创文章 · 获赞 7 · 访问量 1841

猜你喜欢

转载自blog.csdn.net/weixin_45044097/article/details/103052705
今日推荐