【编程】Mybatis递归

如果我们在数据库表中以类似如下的结构来保存树形结构:

idparent_idname
10X市
21X市A区
31X市B区
42X市A区1街

同时又想要简短的递归来把数据组装成树形结构,那么以下是两个简短示例:

<resultMap id="organizationTreeResp" type="com.pingan.pcloud.lg.info.vo.resp.system.OrganizationTreeResp">
    <id column="id" property="id"/>
    <collection column="id" property="children" select="withAuthorityGetOrganizationTree"/>
</resultMap>

<select id="withAuthorityGetOrganizationTree" parameterType="long" resultMap="organizationTreeResp">
    select * from auth_organization o WHERE o.is_del = 0 /*and o.*/ AND o.parent_id = #{id}
</select>
List<OrganizationTreeResp> withAuthorityGetOrganizationTree(@Param("id") Long id);
<resultMap id="permissionResp" type="com.pingan.pcloud.lg.info.vo.resp.system.PermissionResp">
    <id column="id" property="id"/>
    <collection column="{roleId=roleId, id=id}" property="childrenPermission" select="getPermissionTree"/>
</resultMap>

<select id="getPermissionTree" resultMap="permissionResp">
    select o.*, #{roleId} roleId, 
        (CASE WHEN (EXISTS (SELECT 1 FROM auth_role_permission rp
        WHERE rp.role_id = #{roleId} AND rp.permission_id = o.id)) THEN 1 ELSE 0 END) doesHaveThePermission
    from auth_permission o WHERE o.is_del = 0 AND o.parent_id = #{id}
</select>
ArrayList<PermissionResp> getPermissionTree(@Param("id") Integer id, @Param("roleId") Integer roleId);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值