ext 后台查数据库数据拼装tree数据

说明:

两个文件
jackyNode.java  treeVO对象 将数据库当中的树的数据库存入此

jackytree.java  采用递归算法 将一次性查出来的数据生成treeJSON结构

直接将两个文件复制到eclipse中  run as即可查看

 

jackyNode.java

Java代码 复制代码
  1. package com.codeasy.common;   
  2.   
  3.   
  4. public class jackyNode {   
  5.     private int id;   
  6.     private int parentId;   
  7.     private String text;   
  8.     jackyNode(){}   
  9.     jackyNode(int id,int parentId,String text){   
  10.         this.id=id;   
  11.         this.parentId = parentId;   
  12.         this.text = text;   
  13.     }   
  14.     public int getId() {   
  15.         return id;   
  16.     }   
  17.     public void setId(int id) {   
  18.         this.id = id;   
  19.     }   
  20.     public int getParentId() {   
  21.         return parentId;   
  22.     }   
  23.     public void setParentId(int parentId) {   
  24.         this.parentId = parentId;   
  25.     }   
  26.     public String getText() {   
  27.         return text;   
  28.     }   
  29.     public void setText(String text) {   
  30.         this.text = text;   
  31.     }   
  32. }  
package com.codeasy.common;


public class jackyNode {
	private int id;
	private int parentId;
	private String text;
	jackyNode(){}
	jackyNode(int id,int parentId,String text){
		this.id=id;
		this.parentId = parentId;
		this.text = text;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getParentId() {
		return parentId;
	}
	public void setParentId(int parentId) {
		this.parentId = parentId;
	}
	public String getText() {
		return text;
	}
	public void setText(String text) {
		this.text = text;
	}
}

 

 

jackytree.java 

Java代码 复制代码
  1. package com.codeasy.common;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.Iterator;   
  5. import java.util.List;   
  6. /*  
  7.  * 数据库中的表结构是这样的  
  8.  * id  parentid  name   
  9.  *   
  10.  *   
  11.  *   
  12.  */  
  13.   
  14. public class jackytree {   
  15.     List nodeList =new ArrayList();   
  16.     jackytree(){//构造方法里初始化模拟List   
  17.         jackyNode node1 = new jackyNode(1,0,"根节点");     
  18.         jackyNode node2 = new jackyNode(2,1,"一级菜单");     
  19.         jackyNode node3 = new jackyNode(3,1,"一级菜单");     
  20.         jackyNode node4 = new jackyNode(4,2,"二级菜单");     
  21.         jackyNode node5 = new jackyNode(5,2,"二级菜单");     
  22.         jackyNode node6 = new jackyNode(6,2,"二级菜单");     
  23.         jackyNode node7 = new jackyNode(7,6,"三级菜单");     
  24.         jackyNode node8 = new jackyNode(8,6,"三级菜单");     
  25.              
  26.         nodeList.add(node1);     
  27.         nodeList.add(node2);     
  28.         nodeList.add(node3);     
  29.         nodeList.add(node4);     
  30.         nodeList.add(node5);     
  31.         nodeList.add(node6);     
  32.         nodeList.add(node7);     
  33.         nodeList.add(node8);     
  34.     }   
  35.     StringBuffer returnStr=new StringBuffer();     
  36.     public void recursionFn(List list , jackyNode node){     
  37.         if(hasChild(list,node)){     
  38.             returnStr.append("{id:");   
  39.             returnStr.append(node.getId());   
  40.             returnStr.append(",text:'");   
  41.             returnStr.append(node.getText());   
  42.             returnStr.append("'");   
  43.             returnStr.append(",children:[");     
  44.             List childList = getChildList(list,node);     
  45.             Iterator it = childList.iterator();     
  46.             while(it.hasNext()){     
  47.                 jackyNode n = (jackyNode)it.next();     
  48.                 recursionFn(list,n);     
  49.             }     
  50.             returnStr.append("]},");     
  51.         }else{     
  52.             returnStr.append("{id:");   
  53.             returnStr.append(node.getId());   
  54.             returnStr.append(",text:'");   
  55.             returnStr.append(node.getText());   
  56.             returnStr.append("'");   
  57.             returnStr.append(",leaf:true},");     
  58.         }     
  59.              
  60.     }     
  61.     public boolean hasChild(List list, jackyNode node){  //判断是否有子节点   
  62.         return getChildList(list,node).size()>0?true:false;   
  63.     }   
  64.     public List getChildList(List list , jackyNode node){  //得到子节点列表   
  65.         List li = new ArrayList();     
  66.         Iterator it = list.iterator();     
  67.         while(it.hasNext()){     
  68.             jackyNode n = (jackyNode)it.next();     
  69.             if(n.getParentId()==node.getId()){     
  70.                 li.add(n);     
  71.             }     
  72.         }     
  73.         return li;     
  74.     }   
  75.     public String modifyStr(String returnStr){//修饰一下才能满足Extjs的Json格式   
  76.         return ("["+returnStr+"]").replaceAll(",]""]");   
  77.            
  78.     }   
  79.     public static void main(String[] args) {     
  80.         jackytree r = new jackytree();     
  81.         r.recursionFn(r.nodeList, new jackyNode(1,0,"根节点"));     
  82.         System.out.println(r.modifyStr(r.returnStr.toString()));     
  83.     }     
  84. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值