mybatis 自查询实现父子集合

如果表里有一列是设置父级ID,那么我们可以根据这个父级ID进行递归,最后成为返回父子集合的list。


下面是贴上mapper的代码,我们最后只需要调用getAllMenu,就可以返回List<Menu>

<resultMap type="com.example.demo.entity.Menu" id="menuTree">
    <id column="menuId" property="menuId"/>
    <result column="menuName" property="menuName"/>
    <result column="menuAddr" property="menuAddr"/>
    <result column="menuSts" property="menuSts"/>
    <result column="menuSort" property="menuSort"/>
    <result column="menuImg" property="menuImg"/>
    <collection property="children" ofType="com.example.demo.entity.Menu" column="menuId" select="getMenuChildren"/>
</resultMap>
<!-- 先查询菜单根级目录 -->
<!-- 这里的返回结果必须为resultMap,并且值为上面构建的resultMap的id的值 -->
<select id="getAllMenu" resultMap="menuTree">
    SELECT m1.menuId,m1.menuName,m1.menuAddr,m1.menuSts,m1.menuSort,m1.menuImg
    FROM
    menu m1
    WHERE m1.supMenuId=0
</select>

<!-- 再利用上次查询结果colliection中column的值cid做递归查询,查出所有子菜单 -->
<!-- 这里的返回结果必须为resultMap,并且值为上面构建的resultMap的id的值 -->
<select id="getMenuChildren" resultMap="menuTree">
    SELECT m2.menuId,m2.menuName,m2.menuAddr,m2.menuSts,m2.menuSort,m2.menuImg
    FROM menu m2
    WHERE m2.supMenuId=#{menuId}
</select>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值