• mybatis之高级结果映射


    先贴一句官方文档内容

    如果世界总是这么简单就好了。

    正如官方文档所说:如果一切都是这么简单,那该多好啊,但是实际上,我们面对的是复杂的对象,就是对象里有对象,有列表对象,总之五花八门的对象。这个时候我们期盼这mybatis能帮我们来解决这个问题。

    今天,我就遇到了这样的一个问题:

    在做基于RBAC权限分配模型中,一共有五张表

    • sys_permission  记录权限信息,包括权限名称,权限url等
    • sys_role 记录角色信息,包括角色名和角色id
    • sys_role_permission 记录角色权限对应关系
    • sys_user 记录用户表
    • sys_user_role 记录用户角色对应关系,一个用户可能有多个角色

    好的,我在做角色权限的时候,需要这样的一个场景,根据角色id,获取角色的权限列表,然后展示在前台上:

    我的思路是:

    1,先有mybatis逆向生成pojo,然后包装心的角色类,里面包含权限列表,我们姑且设置为SysRoleCustome

    2,然后在mapper.xml里面新增这样的resultmap,如下所示

     <resultMap id="roleCustomeMap" type="com.unisits.zngkpt.common.userprivrman.bojo.SysRoleCustome">
            <result property="roleId" column="role_id"></result>
            <result property="roleName" column="role_name"></result>
            <result property="available" column="available"></result>
            <collection property="perList" ofType="com.unisits.zngkpt.common.userprivrman.pojo.SysPermission">
                <result property="permissionId" column="permission_id"></result>
                <result property="permissionName" column="permission_name"></result>
            </collection>
        </resultMap>

    3,其对应的sql语句为:

       <select id="queryAllRoleCustome" resultMap="roleCustomeMap">
            select
    a.role_id,a.role_name,a.available ,
    b.permission_id,
    c.permission_name
    from sys_role a, sys_role_permission b, sys_permission c
    where a.role_id = b.role_id and b.permission_id = c.permission_id
        </select>

    这样,我们就可以获取包含list<object>这样的对象了

    当然,详细的见解还在官方文档里说明,这里只是抛砖引玉,感叹mybatis的便捷性。

    高级结果映射

  • 相关阅读:
    Directx11学习笔记【九】 【转】 3D渲染管线
    排序算法总结
    [LeetCode92]Reverse Linked List II
    c++析构函数为什么要为虚函数
    简析iOS动画原理及实现——Core Animation
    Xcode 插件集:xTextHandler
    [iOS] 在 ios10 中使用 imessage
    UITableView-FDTemplateLayoutCell 学习笔记
    Xcode 7.3 cannot create __weak reference in file using manual reference counting
    iOS10个实用小技巧(总有你不知道的和你会用到的)
  • 原文地址:https://www.cnblogs.com/ningheshutong/p/6426367.html
Copyright © 2020-2023  润新知