如何将数据库中存的树转化为树形列表(以easyui的tree为例)

这里写图片描述
这里写图片描述

代码实现
Tree 类

public class Tree {
   private String id;
   private String text;
   private String url;
   private String state;
   private String iconCls;
   private String privilegeID;//权限ID
   private String isLeaf;//'叶子节点0否1是',
   private String checked ;//是否选中
   private String parentID ;//父节点ID
   private String nodeType ;//节点类型
   private String nodeTypeValue ;//节点类型
   private List<Tree> children;
    /**
     * 
     * @Description (系统菜单--》菜单管理    获取功能列表)
     * @param response
     * @param request
     */
      @RequestMapping(value = "/menu/getTree.do")
    public void getTree(HttpServletResponse response,HttpServletRequest request,String parentID){  
        String tree = treeService.getTree(parentID);
        ResponseUtils.renderJson(response, tree);
    }

treeService


    public String getTree(String parentID) {
     //获取根节点
            List<Tree> Trees = treeDao.getByPid(parentID);
        List<Tree> bulidTree =this.bulidTree(Trees);

        JSONArray JSONArrays = JSONArray.fromObject(bulidTree); 

        return StringUtil.StringToJson(JSONArrays.toString());
    }


  //获取root节点的子节点
    public      List<Tree>  bulidTree(List<Tree> root){
        for (int i=0;i<root.size();i++) {
         //如果该节点是父节点,将该节点当做root节点,递归bulidTree
            try {
                List<Tree> sonTrees = treeDao.getByPid(root.get(i).getId());
                bulidTree(sonTrees);
                root.get(i).setChildren(sonTrees);
            } catch (Exception e) {
                // 没有获取到数据
                e.printStackTrace();
                continue;
            }
        }
        return  root;
    }

treeDao.getByPid(String parentID)

<select id="getByPid" resultMap="tree" >
            select
        MenuID,
        Title,
        PageUrl,
        IconName
        from Menu
         where  
         PrivilegeID in(
        select PrivilegeID from  UserPrivilegeTemp
            where UserID=#{uid,jdbcType=INTEGER}
        ) and 
         ParentID=#{parentID,jdbcType=VARCHAR}
        and IsActive='1'
          ORDER BY Sequence  desc 
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值