1.对应的sql如下图所示
2.相关业务代码
@RequestMapping("shu1") public String Shu1() { return JSON.toJSONString(getTreeJson()); } public String getTreeJson() { Map<String, Object> treeMap = new HashMap<String, Object>(); treeMap.put("parent_id", 0); treeMap.put("name", "系统管理"); treeMap.put("children", treeList()); String jsonObject = JSONObject.toJSONString(treeMap); System.out.println(jsonObject); return jsonObject; } public List<Tree> treeList() { List<Tree> nextSubSet = new ArrayList<Tree>(); //最小的level int minLevel = treeMapper.MinId(); //一级目录 List<Tree> friList = treeMapper.getFirstLevel(minLevel); for (Tree voteTree : friList) { //根据一级目录查找所有的子集 nextSubSet = treeMapper.getNextSubSet(voteTree); //把查到的二级目录设置都对应的一级目录中 voteTree.setChildren(nextSubSet); } //此时一级目录中已经包含了所有相关的二级目录 return friList; } }
3.mapper接口
@Mapper @Repository public interface ShuMapper { Menu select(int id); List<Menu> selectAll(int id); List<Menu> selectAllNo(); }
4.mapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.lierlin.mapper.TreeMapper"> <select id="MinId" resultType="int"> select min(menu_id) from sys_menu </select> <select id="getFirstLevel" resultType="com.lierlin.pojo.Tree"> select * from sys_menu where parent_id = #{id} </select> <select id="getNextSubSet" resultType="com.lierlin.pojo.Tree"> select * from sys_menu where parent_id = #{menu_id} </select> <select id="getDeeptLevel" resultType="com.lierlin.pojo.Tree"> select * from sys_menu where parent_id = #{menu_id} </select> </mapper>
5.结果
{
"children":[
{
"children":[
{
"children":[
],
"menu_id":15,
"name":"查看",
"parent_id":2
},
{
"children":[
],
"menu_id":16,
"name":"新增",
"parent_id":2
},
{
"children":[
],
"menu_id":17,
"name":"修改",
"parent_id":2
},
{
"children":[
],
"menu_id":18,
"name":"删除",
"parent_id":2
}
],
"menu_id":2,
"name":"管理员列表",
"parent_id":1
},
{
"children":[
{
"children":[
],
"menu_id":19,
"name":"查看",
"parent_id":3
},
{
"children":[
],
"menu_id":20,
"name":"新增",
"parent_id":3
},
{
"children":[
],
"menu_id":21,
"name":"修改",
"parent_id":3
},
{
"children":[
],
"menu_id":22,
"name":"删除",
"parent_id":3
}
],
"menu_id":3,
"name":"角色管理",
"parent_id":1
},
{
"children":[
{
"children":[
],
"menu_id":23,
"name":"查看",
"parent_id":4
},
{
"children":[
],
"menu_id":24,
"name":"新增",
"parent_id":4
},
{
"children":[
],
"menu_id":25,
"name":"修改",
"parent_id":4
},
{
"children":[
],
"menu_id":26,
"name":"删除",
"parent_id":4
}
],
"menu_id":4,
"name":"菜单管理",
"parent_id":1
},
{
"children":[
],
"menu_id":5,
"name":"SQL监控",
"parent_id":1
},
{
"children":[
{
"children":[
],
"menu_id":7,
"name":"查看",
"parent_id":6
},
{
"children":[
],
"menu_id":8,
"name":"新增",
"parent_id":6
},
{
"children":[
],
"menu_id":9,
"name":"修改",
"parent_id":6
},
{
"children":[
],
"menu_id":10,
"name":"删除",
"parent_id":6
},
{
"children":[
],
"menu_id":11,
"name":"暂停",
"parent_id":6
},
{
"children":[
],
"menu_id":12,
"name":"恢复",
"parent_id":6
},
{
"children":[
],
"menu_id":13,
"name":"立即执行",
"parent_id":6
},
{
"children":[
],
"menu_id":14,
"name":"日志列表",
"parent_id":6
}
],
"menu_id":6,
"name":"定时任务",
"parent_id":1
},
{
"children":[
],
"menu_id":27,
"name":"参数管理",
"parent_id":1
},
{
"children":[
],
"menu_id":29,
"name":"系统日志",
"parent_id":1
},
{
"children":[
],
"menu_id":30,
"name":"文件上传",
"parent_id":1
},
{
"children":[
{
"children":[
],
"menu_id":32,
"name":"查看",
"parent_id":31
},
{
"children":[
],
"menu_id":33,
"name":"新增",
"parent_id":31
},
{
"children":[
],
"menu_id":34,
"name":"修改",
"parent_id":31
},
{
"children":[
],
"menu_id":35,
"name":"删除",
"parent_id":31
}
],
"menu_id":31,
"name":"商品管理",
"parent_id":1
}
],
"parent_id":0,
"name":"系统管理"
}