在实际项目上,有很多地方后台存了一个表,但是在显示查询的时候需要显示为树形结构。

本项目是easyui+SSM框架。

前台程序为:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8"/>
  5. <title>列表</title>
  6. <link rel="stylesheet" type="text/css" href="/static/js/easyui/themes/default.css"></link>
  7. <link rel="stylesheet" type="text/css" href="/static/css/module.css"></link>
  8. <script type="text/javascript" src="/static/js/jquery.min.js"></script>
  9. <script type="text/javascript" src="/static/js/easyui/jquery.easyui.min.js"></script>
  10. <script type="text/javascript" src="/comm/js/opentable.js"></script>
  11. </head>
  12. <body class="easyui-layout">
  13. <div>
  14. <table id="test" title="Folder Browser" class="easyui-treegrid" style="width:700px;height:300px"
  15. data-options="url: '/dh/taskOrderInfo/list',method: 'get',rownumbers: true,
  16. idField: 'id',
  17. treeField: 'name',
  18. loadFilter: myLoadFilter,
  19. pagination:true,pageSize:20,">
  20. <thead>
  21. <tr>
  22. <th field="name" width="400">名称</th>
  23. </tr>
  24. </thead>
  25. </table>
  26. </div>
  27. <script type="text/javascript">
  28. function myLoadFilter(data,parentId){
  29. function setData(){
  30. var todo = [];
  31. for(var i=0; i<data.length; i++){
  32. todo.push(data[i]);
  33. }
  34. while(todo.length){
  35. var node = todo.shift();
  36. if (node.children){
  37. node.state = 'closed';
  38. node.children1 = node.children;
  39. node.children = undefined;
  40. todo = todo.concat(node.children1);
  41. }
  42. }
  43. }
  44. setData(data);
  45. var tg = $(this);
  46. var opts = tg.treegrid('options');
  47. opts.onBeforeExpand = function(row){
  48. if (row.children1){
  49. tg.treegrid('append',{
  50. parent: row[opts.idField],
  51. data: row.children1
  52. });
  53. row.children1 = undefined;
  54. tg.treegrid('expand', row[opts.idField]);
  55. }
  56. return row.children1 == undefined;
  57. };
  58. return data;
  59. }
  60. </script>
  61. </body>
  62. </html>

前台使用easyui框架的tree-treegrid。

  1. @RequestMapping(value = "list", method = RequestMethod.GET)
  2. @ResponseBody
  3. public List<Map<String,Object>> list(User user) {
  4. List<Map<String,Object>> list = queryService.queryAll("DhBaseTaskOrderInfoMapper", "queryParentList", null);
  5. for (Iterator iterator = list.iterator(); iterator.hasNext();) {
  6. Map<String, Object> newMap = (Map<String, Object>) iterator.next();
  7. List<Map<String,Object>> newList = queryService.queryAll("DhBaseTaskOrderInfoMapper", "queryChildList", newMap);
  8. newMap.put("children", newList);
  9. }
  10. return list;
  11. }

controller层主要是为了查询数据结构,调用公共的查询方法。

  1. <select id="queryParentList" parameterType="hashmap"resultType="hashmap">
  2. <![CDATA[
  3. select d.A_ID as id ,d.A_NAME as name ,d.A_FATHER as parent_id,dd.A_NAME as parent_name from A_base_info d
  4. LEFT JOIN A_base_info dd on dd.A_ID=d.A_FATHER and dd.BSFLAG='0'
  5. where d.A_FATHER='0'
  6. ]]>
  7. </select>
  8. <select id="queryChildList" parameterType="hashmap"resultType="hashmap">
  9. <![CDATA[
  10. select d.A_ID as id ,d.A_NAME as name from A_base_info d
  11. where d.A_FATHER=#{id}
  12. ]]>
  13. </select>

如上为sql语句,查询树结构。

树形结构已经查询出来,就可以做上移下移的功能了。

数据库查询,显示为树形结构(easyui+SSM)的更多相关文章

  1. 使用递归算法结合数据库解析成java树形结构

    使用递归算法结合数据库解析成java树形结构 1.准备表结构及对应的表数据a.表结构: create table TB_TREE ( CID NUMBER not null, CNAME VARCHA ...

  2. golang笔记(1)-数据库查询结果映射至结构体

    通用的映射模式 query:="select id,name from user where id=?" //单个结构体ret:=&Activity{} DbClient( ...

  3. Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级

    在平时的开发工作中,经常遇到这样一个场景,在数据库中存储了具有父子关系的数据,需要将这些数据以树形结构的形式在界面上进行展示.本文的目的是提供了一个通用的编程模型,解决将具有父子关系的数据转换成树形结 ...

  4. DropDownList中显示无限级树形结构

    效果图: 数据库表: DirID:目录的ID,ParentID:目录的父路径ID,Name:目录的名字主要代码: using System;using System.Collections;using ...

  5. 查询显示MSSQL表结构 [转]

    SELECT 表名 = Case When A.colorder= Then D.name Else '' End, 表说明 = Case When A.colorder= Then isnull(F ...

  6. 使用Oracle数据库实现树形结构表的子-父级迭代(递归)查询和删除,通过级联菜单简单举例

    前言: 我们在开发中,常常遇到单表的子-父id级联的表结构,在树形的深度不确定的情况下,一次查询出某个树形结构下的所有具有子-父级关系的数据变得十分困难. 这时,我们使用oracle提供的CONNEC ...

  7. 使用Oracle数据库实现树形结构表的子-父级递归查询和删除,通过级联菜单简单举例

    前言: 我们在开发中,常常遇到单表的子-父id级联的表结构,在树形的深度不确定的情况下,一次查询出某个树形结构下的所有具有子-父级关系的数据变得十分困难. 这时,我们使用oracle提供的CONNEC ...

  8. 树形结构JSON的实现方法

    在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项.目前市场上常见的JavaScript框架及组件库中均包含自己的树 ...

  9. [SQL Server]树形结构的创建

    对于SQL Server来说,构建显示一个树形结构不是一件容易的事情,逻辑构造能力不是它的强项.不过也不是说它没有能力干这个事情,只要换一种思维方式就可以理解它的工作原理. 例如,现在有一张表的内容如 ...

随机推荐

  1. 「NOIP2002」「Codevs1099」 字串变换(BFS

    1099 字串变换 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold   题目描述 Description 已知有两个字串 $A$, ...

  2. 使用 @RequestMapping 映射请求

  3. Ubuntu 16.04 安装wine

    1.安装源       sudo add-apt-repository ppa:wine/wine-builds       sudo apt-get update 2.安装wine      sud ...

  4. 火狐浏览器安装VULTR笔记

    1.购买一台vultr服务器, 支持支付宝扫码支付,直接美刀转人民币实时结算:优先选日本的,然后美国的; 购买服务器步骤: Server Location: Tokyo Japan Server Ty ...

  5. AJAX 方式

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 【重磅推荐】嵌入式Linux经典书单(部分含视频)

    一直都有人问我要书单,在网上搜索大半天,没找到合适的,他们写的太不负责了,遂决定自己整理. 本书单综合了豆瓣知乎热评,尤其参考了一线开发者韦东山学员群的小伙伴们的意见, 再结合本人多年答疑经验整理而成 ...

  7. 动态规划专题(一) HDU1087 最长公共子序列

    Super Jumping! Jumping! Jumping! 首先对于动态规划问题要找出其子问题,如果找的子问题是前n个序列的最长上升子序列,但这样的子问题不好,因为它不具备无后效性,因为它的第n ...

  8. CentOS 6.5远程连接工具x shell

    安装X shell 在Window系统下远程连接Linux,x shell只是一种远程连接工具,类似工具还有CRT.VNC.putty. 以下是安装X shell的注意事项 此选项中,如不把——初始数 ...

  9. 使用 SourceTree 管理ios项目

    SourceTree 是一个非常优秀的版本控制软件,他是一个客户端,方便我们去接入 GitHub .BitBucke 上面托管的代码. 声明(1——4是来自简书的非个人作品,仅仅保存资料学习使用) 一 ...

  10. docker三剑客之一docker compose

    compose有两个重要的概念: 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例 项目(project):由一组关联的应用容器组成的一个完整业务单元,在docker- ...