今天才发现 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
// 省去getter setter和toString方法
}
menuDao
public interface MenuDao {
/**
* 递归查找所有
*
* @return
*/
public List
}
mapper.xml
SELECT id,`name`,parent_id,url FROM menu WHERE parent_id ='' or parent_id is NULL ORDER BY `order` ASC
SELECT id,`name`,parent_id,url FROM menu WHERE parent_id = #{id} ORDER BY `order` ASC
其中 findAllRecursion 会查询到所有的父菜单,
因为我们定义的
而在 recursionMenuMap 中我们定义了如何去查找子菜单,调用 findMenuByParentId