MYSQL数据库
查出数据调用封装类
List<Menu> menulist = new ArrayList<Menu>();
menulist = menuService.menuList();
MenuTree menuTree = new MenuTree();
System.out.println(menuTree.menuList(menulist));树形结构封装类
package com.sdmc.util;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.sdmc.bean.Menu;
public class MenuTree {
public static Map<String,Object> mapArray = new LinkedHashMap<String, Object>();
public List<Menu> menuCommon;
public List<Object> list = new ArrayList<Object>();
public List<Object> menuList(List<Menu> menu){
this.menuCommon = menu;
for (Menu x : menu) {
Map<String,Object> mapArr = new LinkedHashMap<String, Object>();
if(x.getPid()==0){
mapArr.put("id", x.getId());
mapArr.put("name", x.getName());
mapArr.put("level", x.getLevel());
mapArr.put("pid", x.getPid());
mapArr.put("child", menuChild(x.getId()));
list.add(mapArr);
}
}
return list;
}
public List<?> menuChild(int id){
List<Object> lists = new ArrayList<Object>();
for(Menu a:menuCommon){
Map<String,Object> childArray = new LinkedHashMap<String, Object>();
if(a.getPid() == id){
childArray.put("id", a.getId());
childArray.put("name", a.getName());
childArray.put("level", a.getLevel());
childArray.put("pid", a.getPid());
childArray.put("child", menuChild(a.getId()));
lists.add(childArray);
}
}
return lists;
}
}结果
[{id=1, name=内容管理, level=1, pid=0,
child=[{id=6, name=栏目管理, level=2, pid=1,
child=[{id=17, name=管理内容, level=3, pid=6,
child=[{id=11, name=业务管理, level=4, pid=17, child=[]}]}]},
{id=7, name=模型管理, level=2, pid=1, child=[]}]},
{id=2, name=用户管理, level=1, pid=0, child=[{id=10, name=会员管理, level=2, pid=2, child=[]}]}
]
本文介绍了一种从MySQL数据库中获取数据并将其封装为树形结构的方法。通过使用自定义的Java类`MenuTree`,可以将具有层级关系的数据转换成易于前端展示的格式。该方法首先查询所有菜单项,然后根据父节点ID(`pid`)来构建树状结构。
1万+





