从数据库读取数据并动态生成easyui tree构结
一、 数据库表结构
二、从后台读取数据库生成easyui tree结构的树
1、TreeNode树结点类(每个结点都包含easyui tree 的基本属性信息)
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class TreeNode implements Serializable {
- private String id;
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- private String text;
- public String getText() {
- return text;
- }
- public void setText(String text) {
- this.text = text;
- }
- private String parentid;
- public String getParentid() {
- return parentid;
- }
- public void setParentid(String parentid) {
- this.parentid = parentid;
- }
- private List<TreeNode> children = new ArrayList<TreeNode>();
- public List<TreeNode> getChildren() {
- return children;
- }
- public void setChildren(List<TreeNode> children) {
- this.children = children;
- }
- private String iconCls;
- public String getIconCls() {
- return iconCls;
- }
- public void setIconCls(String iconCls) {
- this.iconCls = iconCls;
- }
- private String state;//节点状态,'open' 或 'closed',默认:'open'。
- public String getState() {
- return state;
- }
- public void setState(String state) {
- this.state = state;
- }
- private boolean checked;
- public boolean isChecked() {
- return checked;
- }
- public void setChecked(boolean checked) {
- this.checked = checked;
- }
- private Map<String, Object> attributes = new HashMap<String, Object>();
- public Map<String, Object> getAttributes() {
- return attributes;
- }
- public void setAttributes(Map<String, Object> attributes) {
- this.attributes = attributes;
- }
- }
2、用递归方法生成easyui tree 格式的json字符串
- public static TreeNode recursiveTree(String id) {
- // 根据id获取节点对象(SELECT * FROM ttree t WHERE t.id=?)
- TreeNode node = getTreeNode(id);
- // 查询id下的所有子节点(SELECT * FROM ttree t WHERE t.parentid=?)
- List<TreeNode> childTreeNodes = queryTreeNode(id);
- // 遍历子节点
- for (TreeNode child :childTreeNodes) {
- TreeNode n = recursiveTree(child.getId()); // 递归
- node.getChildren().add(n);
- }
- return node;
- }
- private static TreeNode getTreeNode(String id){
- TreeNode treeNode = null;
- Connection dbConn = getDbConnection();
- if(dbConn != null){
- try {
- String strSQL = "select * from ttree where id="+id;
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- pstmt = dbConn.prepareStatement(strSQL);
- rs = pstmt.executeQuery();
- while (rs.next()) {
- treeNode = new TreeNode();
- treeNode.setId(rs.getString("id"));
- treeNode.setText(rs.getString("text"));
- treeNode.setParentid(rs.getString("parentid"));
- Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put("url",rs.getString("url"));
- treeNode.setAttributes(attributes);
- }
- rs.close();
- pstmt.close();
- dbConn.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return treeNode;
- }
- private static List<TreeNode> queryTreeNode(String id){
- List<TreeNode> arrList = new ArrayList<TreeNode>();
- Connection dbConn = getDbConnection();
- TreeNode treeNode = null;
- if(dbConn != null){
- try {
- String strSQL = "select * from ttree where parentid="+id;
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- pstmt = dbConn.prepareStatement(strSQL);
- rs = pstmt.executeQuery();
- while (rs.next()) {
- treeNode = new TreeNode();
- treeNode.setId(rs.getString("id"));
- treeNode.setText(rs.getString("text"));
- treeNode.setParentid(rs.getString("parentid"));
- Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put("url",rs.getString("url"));
- treeNode.setAttributes(attributes);
- arrList.add(treeNode);
- }
- rs.close();
- pstmt.close();
- dbConn.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return arrList;
- }
3、测试调用(JSON.toJSONString方法是使用的fastjson.jar包中的方法功能很强大强烈推荐,可以在网上下载)
- public static void main(String[] args) {
- TreeNode node = recursiveTree("1");
- String jsonText = JSON.toJSONString(node, true);
- System.out.println(jsonText);
- }
4、输出结果
- {
- "attributes":{
- "url":"1"
- },
- "checked":false,
- "children":[{
- "attributes":{
- "url":"2"
- },
- "checked":false,
- "children":[
- {
- "attributes":{
- "url":"3"
- },
- "checked":false,
- "children":[],
- "id":"3",
- "parentid":"2",
- "text":"长沙"
- },
- {
- "attributes":{
- "url":"4"
- },
- "checked":false,
- "children":[],
- "id":"4",
- "parentid":"2",
- "text":"株洲"
- },
- {
- "attributes":{
- "url":"5"
- },
- "checked":false,
- "children":[],
- "id":"5",
- "parentid":"2",
- "text":"湘潭"
- },
- {
- "attributes":{
- "url":"6"
- },
- "checked":false,
- "children":[
- {
- "attributes":{
- "url":"7"
- },
- "checked":false,
- "children":[],
- "id":"7",
- "parentid":"6",
- "text":"岳阳县"
- },
- {
- "attributes":{
- "url":"http://192.168.1.1"
- },
- "checked":false,
- "children":[],
- "id":"8",
- "parentid":"6",
- "text":"华容县"
- },
- {
- "attributes":{
- "url":"9"
- },
- "checked":false,
- "children":[],
- "id":"9",
- "parentid":"6",
- "text":"湘阴县"
- }
- ],
- "id":"6",
- "parentid":"2",
- "text":"岳阳"
- }
- ],
- "id":"2",
- "parentid":"1",
- "text":"湖南"
- }],
- "id":"1",
- "parentid":"0",
- "text":"中国"
- }
写得很简单代码不是很规范,只是个测试demo。但功能很实用,希望对做web开发同学有些帮助。
从数据库读取数据并动态生成easyui tree构结的更多相关文章
- .Net Mvc 返回Json,动态生成EasyUI Tree
最近做一个项目,开始接触EasyUI,感觉很强大,很适合我这种对前台不是很感冒的人.在学习Tree的过程中,感觉网上的资料挺乱的,很多只是把EasyUI API 抄了一遍.现在把最近这段时间的学到的, ...
- 10天学会phpWeChat——第三天:从数据库读取数据到视图
在第二天,我们创建了我们的第一个phpWeChat功能模块,但是比较简单.实际生产环境中,我们不可能有如此简单的需求.更多的情况是数据存储在MySql数据库中,我们开发功能模块的作用就是将这些数据从M ...
- echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端
1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小de ...
- C#实现从数据库读取数据到Excel
用第三方组件:NPOI来实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...
- JMeter 参数化之利用JDBCConnectionConfiguration从数据库读取数据并关联变量
参数化之利用DBC Connection Configuration从数据库读取数据并关联变量 by:授客 QQ:1033553122 1. 下载mysql jar包 下载mysql jar包 ...
- Android打开数据库读取数据
打开数据库读取数据 private MyDatabaseHelper dbHelper; dbHelper=new MyDatabaseHelper(this,"List.db", ...
- .Net MVC 动态生成LayUI tree
.Net MVC 动态生成LayUI tree 最近在做项目的过程中需要用到Tree插件,所以找了一堆Tree发现LayUI的Tree样式比较好看,所以开始搞! 1.Layui部分 1.1 首先引用文 ...
- silverlight 从数据库获取到数据,动态生成XMLWEN文件,并获取文件进行操作
// Silverlight中的独立存储是其内部的可信任的可访问文件空间,在这里你可以使用Silverlight随意的创建.读取.写入.删除目录和文件,它有一些类似于Cookie,但是它可以在客户端保 ...
- Hibernate上传数据到数据库,从数据库读取数据到本地模板代码
1.Hibernate上传数据到数据库: //创建一个session对象 Session session1=HibernateTools.getSession(); //Fenciresult数据库表 ...
随机推荐
- RecyclerView 实现横向滚动效果
我相信很久以前,大家在谈横向图片轮播是时候,优先会选择具有HorizontalScrollView效果和ViewPager来做,不过自从Google大会之后,系统为我们提供了另一个控件Recycler ...
- iOS屏幕适配-iOS笔记
学习目标 1.[了解]屏幕适配的发展史 2.[了解]autoResizing基本用法 3.[掌握]autoLayout 的基本用法 4.[掌握]autoLayout代码实现 5.[理解]sizeCla ...
- C++对象模型(四):class成员初始化列表(Member Initialization List)
本文是Inside C++ Object Model Chapter 2 部分的读书笔记. 编译器如何处理初始化成员列表的. 下列情况中,必须要使用member initialization list ...
- 【一天一道LeetCode】#43. Multiply Strings
一天一道LeetCode系列 (一)题目 Given two numbers represented as strings, return multiplication of the numbers ...
- 【Qt编程】Qt学习之状态栏
QStatusBar类提供一个水平条来显示状态信息.所谓状态信息,拿个简单的例子来说,当你在word中编辑时,左下角就会出现页面.字数等等信息.状态信息可以分为三类:临时信息,如一般的提示信息:正常信 ...
- C# Oracle数据库操作类实例详解
本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长 ...
- Memcached学习笔记 — 第四部分:Memcached Java 客户端-gwhalin(1)-介绍及使用
介绍 Memcached java client是官方推荐的最早的memcached java客户端.最新版本:java_memcached-release_2.6.1. 官方下载地址:http ...
- ITU-T E.800 有关服务质量(QoS)的术语定义
摘要 ITU-T E.800建议书为服务质量(QoS)的研究和管理提供了一套通用术语.本建议书列出的与QoS相关的技术和非技术术语旨在代表电信市场所有各方(即用户.服务提供商.制造商和监管机构)的利益 ...
- 地产IT人福利:帆软地产BI解决方案全解析
解决方案下载地址 帆软大型地产集团项目解决方案 下载地址:http://pan.baidu.com/s/1pJGeqKF帆软地产BI解决方案之KPI考核系统 下载地址:http://pan.baidu ...
- Python和shell中Base64编码使用那些事
做开发第一个接触的编码方式就是Base64,当时是用url来传输一些参数,传输的两端会用Base64来编码和解码,保证数据不被url转义破坏. 下面是 维基百科 Base64 中的介绍,其实自己实现起 ...