前言
之前我已经做好了一个布局,今天我们学习一下关于tree组件的后台代码实现,下一篇博客实现效果!
tree组件简介
tree其实就是像上面图片的一个组件,就像一个父类中包含着许多子类,子类中还能包含着孙子类这样子,至于为什么叫tree……
可能是这个特性像极了树的分支吧!
后台代码获取数据
需要的工具类
需要的jar包:
我们需要将以下数据转换成json格式:
因为tree组件需要json格式的数据!
然后我们就思考,它是怎么转换成json格式的?
首先我们看tree的格式,其实我们可以将他看成一个对象,只不过其中还包含着他的后代,我们再分析这张表:
json格式的特点?
有混合数组、对象数组
因为数据库的关系我们分析过啦,可以尝试将数据库中的数据以代码转换成一个大的混合数组哦!
我们就可以开始写代码了!
package dao;
import entity.Permission;
import entity.TreeVo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
import dao.BaseDao;
import util.PageBean;
import vo.BuildTree;
public class PermissionDao extends BaseDao<Permission>{
public List<Permission> list(Permission p,PageBean pageBean) throws Exception{
String sql="select * from t_easyui_permission ";
return super.executeQuery(sql, Permission.class, pageBean);
}
public static void main(String[] args) throws Exception {
PermissionDao pd=new PermissionDao();
//获取数据库的数据
List<Permission> list = pd.list(null, null);
//通过工具类完成指定格式的输出
List<TreeVo<Permission>> nodes=new ArrayList<TreeVo<Permission>>();
//Permission的格式是不满足easyUI组件的展现的数据格式的
//目的:将List<Permission>转换成List<TreeVo<T>>
//实现:将List<Permission>得到的单个Permission转换成TreeVo,将TreeVo加入到nodes
TreeVo treevo=null;
for (Permission permission : list) {
//System.out.println(permission);
treevo=new TreeVo<>();
treevo.setId(permission.getId()+"");
treevo.setText(permission.getName());
treevo.setParentId(permission.getPid()+"");
// Map<String, Object> attributes=new HashMap<String, Object>();
// attributes.put("self", permission);
// treevo.setAttributes(attributes);
nodes.add(treevo);
}
TreeVo<Permission> parent=BuildTree.build(nodes);
ObjectMapper om=new ObjectMapper();
String jsonstr = om.writeValueAsString(parent);
System.out.println(jsonstr);