今天才发现 mybatis 也可以递归查询子菜单
先看一下数据库
主键 id,名称 name,父 id,和 url
设计菜单类
public class Menu { // 菜单id private String id; // 父菜单id private String parentId; // 菜单名称 private String name; // 菜单url private String url; // 子菜单 private List<Menu> children; // 省去getter setter和toString方法 }
menuDao
public interface MenuDao { /** * 递归查找所有 * * @return */ public List<Menu> findAllRecursion(); }
mapper.xml
<resultMap type="Menu" id="recursionMenuMap"> <id column="id" property="id"/> <result column="name" property="name"/> <collection property="children" ofType="Menu" column="id" select="findMenuByParentId"/> </resultMap> <select id="findAllRecursion" resultMap="recursionMenuMap"> SELECT id,`name`,parent_id,url FROM menu WHERE parent_id ='' or parent_id is NULL ORDER BY `order` ASC </select> <select id="findMenuByParentId" resultType="Menu"> SELECT id,`name`,parent_id,url FROM menu WHERE parent_id = #{id} ORDER BY `order` ASC </select>
其中 findAllRecursion 会查询到所有的父菜单,
因为我们定义的
<select id="findAllRecursion" resultMap="recursionMenuMap">
而在 recursionMenuMap 中我们定义了如何去查找子菜单,调用 findMenuByParentId
转载自:http://blog.csdn.net/frankcheng5143/article/details/72723958
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于