mybatis 自查询实现父子集合

小鱼儿 2024-03-27 15:07 149阅读 0赞
  1. 如果表里有一列是设置父级ID,那么我们可以根据这个父级ID进行递归,最后成为返回父子集合的list
  2. 下面是贴上mapper的代码,我们最后只需要调用getAllMenu,就可以返回List<Menu>
  3. <resultMap type="com.example.demo.entity.Menu" id="menuTree">
  4. <id column="menuId" property="menuId"/>
  5. <result column="menuName" property="menuName"/>
  6. <result column="menuAddr" property="menuAddr"/>
  7. <result column="menuSts" property="menuSts"/>
  8. <result column="menuSort" property="menuSort"/>
  9. <result column="menuImg" property="menuImg"/>
  10. <collection property="children" ofType="com.example.demo.entity.Menu" column="menuId" select="getMenuChildren"/>
  11. </resultMap>
  12. <!-- 先查询菜单根级目录 -->
  13. <!-- 这里的返回结果必须为resultMap,并且值为上面构建的resultMapid的值 -->
  14. <select id="getAllMenu" resultMap="menuTree">
  15. SELECT m1.menuId,m1.menuName,m1.menuAddr,m1.menuSts,m1.menuSort,m1.menuImg
  16. FROM
  17. menu m1
  18. WHERE m1.supMenuId=0
  19. </select>
  20. <!-- 再利用上次查询结果colliectioncolumn的值cid做递归查询,查出所有子菜单 -->
  21. <!-- 这里的返回结果必须为resultMap,并且值为上面构建的resultMapid的值 -->
  22. <select id="getMenuChildren" resultMap="menuTree">
  23. SELECT m2.menuId,m2.menuName,m2.menuAddr,m2.menuSts,m2.menuSort,m2.menuImg
  24. FROM menu m2
  25. WHERE m2.supMenuId=#{menuId}
  26. </select>

发表评论

表情:
评论列表 (有 0 条评论,149人围观)

还没有评论,来说两句吧...

相关阅读