实体类 : A
属性: id pid name
后台数据库sql
最好写成一次性的查找,这样对数据库的访问就会少
sql: select * from 表名
这个是ssm框架
后台写成递归的形式,将父集和子集都查出,注意递归写成封装的形式
接口:FindMapper: List<a> select();
实现:public List<Map<String,Object>> select(){
List<a> list = FindMapper.select ();
return selectTree(list,"0");
}
递归私有化: private List<Map<String,Object>> selectTree( List<a> list ,String parentbh){
List<Map<String,Object>> llist1 = new ArrayList<Map<String,Object>>();
for(A a :list){
if(a.getpid().equals(parentbh)){
Map<String,Object> fatherMap = new HashMap<String,Object>();
//后台写好前台对应的格式,前台会自动获取并填值
fatherMap.put("id",a.getid());
fatherMap.put("text",a.getname());
fatherMap.put("children",selectTree(list,a.getid()));//递归的调用
list1.add(fatherMap);
}
}
return list1;
}
前端生成树
定义一个div <div id="tree"></div>
function jstree(){
$("#tree").jstree({
'core':{
'data':{
'url':'' ,
dataType:'json' ,
'data'{
//可往后台传参,也可以不传
}
}
},
'plugins':['checked'],//多选框
}).on('loaded.jstree',function(event,data){
//写回掉函数
})
}