• mybatis的collection建立1对多关系 II


    现在是时候做一个复杂点儿的嵌套式(我觉得应该叫串联式)的搜索了.

    首先, 1个user, 有多个role, 也就是说, 一个user对象, 有一个roleList, 然后一个role可能对应多个privilege的url, 即一个role对象, 里面有一个privilegeList, 如下:

    public class SysUser {
    ......
        private List<SysRole> roleList;
    ......
    }
    
    
    public class SysRole {
    ......
        private List<SysPrivilege> privilegeList;
    ......
    }

    然后分别在mapper的xml文件里面, 加上resultMap:

    首先是user的mapper:

        <resultMap id="userRoleListMapWithPrivilege" extends="userMap" type="marc.mybatis.lesson1.model.SysUser">
            <collection property="roleList" columnPrefix="role_" resultMap="marc.mybatis.lesson1.mapper.SysRoleMapper.privilegeMapWithRoleList" />
        </resultMap>

    这个collection里面指向一个roleList, 类型是RoleMapper里面的一个resultMap:

        <resultMap type="marc.mybatis.lesson1.model.SysRole" id="privilegeMapWithRoleList" extends="roleMap">
            <collection property="privilegeList" columnPrefix="privilege_" resultMap="marc.mybatis.lesson1.mapper.PrivilegeMapper.privilegeMap" />
        </resultMap>

    这个collection同样指向model里面的list: privilegeList

    最重要的一件事, select语句里面注意所有的prefix:

        <select id="selectUserWithRolePrivielgeDetail" resultMap="userRoleListMapWithPrivilege">
            select
            u.id,u.user_name,u.user_password,u.user_email,u.user_info,u.head_img,u.create_time,r.id
            role_id,r.role_name role_role_name, r.enabled role_enabled,r.create_by
            role_create_by,r.create_time role_create_time,p.id
            role_privilege_id,p.privilege_name
            role_privilege_privilege_name,p.privilege_url
            role_privilege_privilege_url from sys_user u inner join sys_user_role
            ur on u.id=ur.user_id inner join sys_role r on ur.role_id=r.id inner
            join sys_role_privilege rp on rp.role_id=r.id inner join sys_privilege
            p on p.id=rp.privilege_id where u.id=#{id}
        </select>

    注意highlight出来的一段, column就是通过下划线一点点组合成list的...MyBatis有一套.

  • 相关阅读:
    Linux基础命令练习题答案7.9
    Linux基础练习题7.9
    Linux基础练习题答案7.8
    Linux基础练习题7.8
    12 drf精华总结
    11 drf(RBAC)基于角色的权限控制
    10 drfJWT认证
    09 drf自动生成接口文档
    08 drf分页器
    Python 3.9正式版,新特性提前一睹为快
  • 原文地址:https://www.cnblogs.com/Montauk/p/9786781.html
Copyright © 2020-2023  润新知