今天修改了个功能,修改车辆分类树。现在将其前后端记录下来,主要代码如下:

1、js代码:

1.1 js获取数据

var UITree = function () {var vehTypeTree = function() {$("#div_treeId").jstree({"core" : {"themes" : {"responsive": false}, // so that create works"check_callback" : true,'data' : function (obj, callback) {$.ajax({type : "POST",async : true,url : "后端地址?parentId=#",  //#为根节点的iddata : "",dataType : "JSON",success : function(data) {callback.call(this, data);},error:function(err){err;}});}},"types" : {"default" : {"icon" : "fa fa-folder icon-state-warning icon-lg"},"file" : {"icon" : "fa fa-file icon-state-warning icon-lg"}},"plugins" : [ "dnd", "types", "checkbox", "wholerow" ]});}return {//main function to initiate the moduleinit: function () {//车辆类别选择vehTypeTree();}};}();

1.2 页面加载

$(function() {if (App.isAngularJsApp() === false) {jQuery(document).ready(function() {UITree.init();$('#div_treeId').on("ready.jstree",function(e, data) {loadAllReportData();});});}});

div什么的就不贴了,稍微随便写一点就OK。

2、controller代码和工具类:

@RequestMapping(value = "/后台地址", method = RequestMethod.POST)public void test(@RequestParam String parentId) {try {//result里面存树结构的链表List<Map<String, Object>> result = service.qry_CLFL(parentId);test2(result);} catch (Exception e) {e.printStackTrace();}}
//工具类writeJson方法
protected void test2(Object jsonObj) {PrintWriter out = null;try {response.setContentType("text/html");out = response.getWriter();String jsonStr = null;if (jsonObj instanceof String) { //对比数据类型jsonStr = jsonObj.toString();} else {jsonStr = JsonUtils.toJson(jsonObj);}out.write(jsonStr);out.flush();out.close();} catch (Exception e) {e.printStackTrace();}}
//工具类构造我们需要的树结构方法
public static List<Map<String, Object>> test1(List<Map<String, Object>> resultList) {if (resultList != null && resultList.size() > 0) {List<Map<String, Object>> retList = new ArrayList<Map<String, Object>>();Map<String, Object> m = new HashMap<String, Object>();for (Map<String, Object> map : resultList) {m.put("需要的字段", map.get("需要的字段"));m.put("需要的字段", map.get("需要的字段"));m.put("需要的字段", map.get("需要的字段"));Map<String, Object> s = new HashMap<String, Object>();if (map.get("默认选中字段")!=null && map.get("默认选中字段").toString().equals("1") ){s.put("selected", true);s.put("opened", true);}m.put("state", s);    retList.add(m);m = new HashMap<String, Object>();                }return retList;}return null;}

3、service代码

 @Overridepublic List<Map<String, Object>> qry_CLFL(String parentId) throws Exception {// TODO Auto-generated method stubStringBuffer strBuf = new StringBuffer("");strBuf.append(" sql代码 ");      List<Map<String, Object>> resultList = jdbcTemplate.queryForList(strBuf.toString());if (resultList != null && resultList.size() > 0)return ListUtil.convertListForJsTreeByT_B_VEHICLE_TAG(resultList);//调工具类return null;}

4、sql

 select "需要的字段"F_GetCntOfT_B_VEHICLE(t.id) as vehcnt,  --通过t.id查找此ID的数量level as lev,CONNECT_BY_ISLEAF as isleaf --CONNECT_BY_ISLEAF 为判断是否是最底节点from tableA tstart with t.pid = '#' --#为根节点connect by prior t.id = t.pid --pid为父类节点id  t.id为tpid的子节点order siblings by t.orderno   --以t.orderno进行分支排序--创建函数
create or replace function F_GetCntOfT_B_VEHICLE(传入的ID in varchar2) return number iscnt number;
beginselect count(0)into cntfrom tableB vwhere v.分类ID in (select idfrom tableA tstart with t.id = "传入的ID"connect by prior t.id = t.pid);return(cnt);
end;

本人学识浅薄,有总结的不到位或是不准确的地方,欢迎指正。

=================================补充分割线==============================

两棵树:

通过sql语句查询到树分类的list,由于是两棵树,根节点为 '#' 的数据应该有两个条。

组装树:

@RequestMapping("/getVehicleTree")
public void getVehicleTree(HttpServletRequest request, HttpServletResponse response) throws IOException {List<Map<String, Object>> list = vehicleService.selectAllVehicleTag();TreeNode root1 = null;TreeNode root2 = null;int flag = 1;for (int i = 0; i< list.size(); i++) {Map<String, Object> map = list.get(i);if (map.get("PID").toString().equals("#")) {if (flag == 1) {//找到第一棵树父节点root1 = new TreeNode(map.get("ID").toString(), map.get("PID").toString(), map.get("TAGNAME").toString());flag ++;//2}else {flag ++;//3//找到第二棵树父节点root2 = new TreeNode(map.get("ID").toString(), map.get("PID").toString(), map.get("TAGNAME").toString());}} else {TreeNode cNode = new TreeNode(map.get("ID").toString(), map.get("PID").toString(),map.get("TAGNAME").toString());if(flag == 2){root1.add(cNode);}else {root2.add(cNode);}}}String str3 ="["+ JSONArray.toJSONString(root1) +","+ JSONArray.toJSONString(root2)+"]";response.setCharacterEncoding("utf-8");response.setContentType("text");response.getWriter().println(str3);response.flushBuffer();}

oracle树结构查询语句相关推荐

  1. oracle 操作树大全,oracle树查询语句

    oracle树查询语句 2020-01-13 01:01:01 79 格式: SELECT column FROM table_name START WITH column=value CONNECT ...

  2. Oracle分页查询语句(六)

    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. Oracle分页查询语句(一):http://yangtingkun.itpub.net/post/468/100278 Oracl ...

  3. java oracle分页查询语句_oracle分页查询语句,java得到分页查询语句的方法

    oracle分页查询语句 select * from ( select a.*, rownum rn from (select * from table_name) a where rownum &l ...

  4. JAVA中oracle分页语句,oracle分页查询语句,java得到分页查询语句的方法

    oracle分页查询语句 select * from ( select a.*, rownum rn from (select * from table_name) a where rownum &l ...

  5. oracle 动态条件查询语句,教您Oracle动态查询语句的用法

    Oracle动态查询语句是一类特殊的查询语句,下面就为您详细介绍Oracle动态查询语句的语法,如果您对Oracle动态查询方面感兴趣的话,不妨一看. 1. 当使用EXECUTE IMMEDIATE语 ...

  6. java oracle分页查询语句_Oracle分页查询语句的写法(转)

    Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用. ...

  7. oracle 树 向上查询,Oracle中显示树结构查询语句【子查父和父查子】

    实际开发中可能会用到树状查询结果,语句如下: select ID, LPAD(DEPT_NAME, LENGTH(DEPT_NAME) + (LEVEL * 2), ' ') dept_name fr ...

  8. oracle基本的查询语句,oracle 基本查询语句及实例

    1.查询所有列 select * from 表名: 2.查询表结构 desc 表名: 3.查询指定列 select ename,sal,job from 表名: 4.racle中查看所有表和字段 获取 ...

  9. oracle树结构查询----connect by语法详解

    connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: ...

最新文章

  1. 有针对linux系统的补丁吗,Linux用户的注意了 有两个补丁需要你打一下
  2. python绘制雷达图代码实例-PYTHON绘制雷达图代码实例
  3. 官宣!极客邦科技获2000万元 A 轮融资,全面发力知识服务平台
  4. 下标 获取字符_【文山玩Python】如何从字符串中取一段或指定字符
  5. 300. 最长上升子序列
  6. react学习(15)---antdesign form两种验证
  7. data数值设置 vue_怎么改变vue中data的数据
  8. django 1.8 官方文档翻译: 3-3-3 文件储存API
  9. Android UI事件传递就是这么个事儿
  10. 计算机系统中字word的描述性定义是,计算机基础练习题1
  11. mysql5.6 主从 延迟_MySQL5.6升级5.7时,出现主从延迟问题排查过程
  12. WCF笔记--泛型与集合数据类型
  13. 利用mybatis插件开发动态更改sql
  14. 13个常用的Word快捷键,一看就会,你值得拥有!
  15. 如何学习计算机思维,刘康平:为什么我们每个人都应该学习计算思维?
  16. c语言计算火车运行图调整暂停发售,详解铁路12306列车运行图调整,暂停发售
  17. 2019年的第一篇随笔
  18. 全角空格可复制粘贴,解决字符对齐问题
  19. 阿里云云平台,物联网可视化web界面简单教程
  20. 【毕业设计】基于单片机的心率检测系统 - stm32 物联网 嵌入式

热门文章

  1. 用html5做元素周期表,Web纯前端“旭日图”实现元素周期表
  2. vue-router.esm.js?fe87:2062 Uncaught (in promise) Error: Avoided redundant navigation to current loc
  3. ros-melodic-desktop-full : Depends: ros-melodic-perception but it is not going to be installed
  4. java代码老鼠走迷宫案例
  5. linux练习2021-11-2硬链接与软链接计划任务
  6. 【备战春招/秋招系列】初出茅庐的程序员该如何准备面试?
  7. 利用AI+大数据的方式分析恶意样本(二)
  8. 阿里云API定时发送短信(小记)
  9. h5拍摄身份证_【教程】4步配置完成H5端人脸实名认证
  10. Hive数据仓库汽车销售分析练习题(项目)