将从数据库查询出来的带有父子结构的list转换成treeList结构
- package test;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
- public class DBHelper {
- public static final String url = "jdbc:mysql://127.0.0.1/peixian";
- public static final String name = "com.mysql.jdbc.Driver";
- public static final String user = "root";
- public static final String password = "root";
- public Connection conn = null;
- public PreparedStatement pst = null;
- public DBHelper(String sql) {
- try {
- Class.forName(name);//指定连接类型
- conn = DriverManager.getConnection(url,user,password);//获取连接
- pst = conn.prepareStatement(sql);//准备执行语句
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public void close() {
- try {
- this.conn.close();
- this.pst.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- //调用demo类================
- package test;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.mysql.jdbc.StringUtils;
- public class Demo {
- static String sql = null;
- static DBHelper db1 = null;
- static ResultSet ret = null;
- public static void main(String[] args) {
- sql = "select *from xy_sys_menu";//SQL语句
- db1 = new DBHelper(sql);//创建DBHelper对象
- try {
- List<Map<String,Object>>list=new ArrayList<Map<String,Object>>();
- ret = db1.pst.executeQuery();//执行语句,得到结果集
- ResultSetMetaData md = ret.getMetaData(); //获得结果集结构信息,元数据
- int columnCount = md.getColumnCount(); //获得列数
- while (ret.next()) {
- Map<String,Object> rowData = new HashMap<String,Object>();
- for (int i = 1; i <= columnCount; i++) {
- rowData.put(md.getColumnName(i), ret.getObject(i));
- }
- list.add(rowData);
- }
- System.out.println("list============="+list);
- List<Map<String, Object>>listTree=getTreeList("MENU_NO","PMENU_NO","children",list);
- System.out.println("listTree===="+listTree);
- ret.close();
- db1.close();//关闭连接
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- //把带有父子机构的数据变成treelist形式
- public static List<Map<String, Object>> getTreeList(String id,String pid,String children,List<Map<String, Object>>list) {
- //List<Map<String, Object>>listmap=new ArrayList<Map<String, Object>>();
- //给list的每一项加一个子项
- for(int i=0;i<list.size();i++) {
- list.get(i).put(children, new ArrayList<Map<String, Object>>());
- }
- List<Map<String, Object>>treelist=new ArrayList<Map<String, Object>>();
- for(Map<String, Object> outmap:list) {
- for(Map<String, Object> inmap:list) {
- String outid=outmap.get(id).toString();
- String inpid=inmap.get(pid).toString();
- if(outid.equals(inpid)) {
- List<Map<String, Object>>maplist=(ArrayList) outmap.get(children);
- maplist.add(inmap);
- }
- }
- String prid=outmap.get(pid).toString();
- if(StringUtils.isNullOrEmpty(prid)) {
- treelist.add(outmap);
- }
- }
- return treelist;
- }
- }
将从数据库查询出来的带有父子结构的list转换成treeList结构的更多相关文章
- JS 将有父子关系的数组转换成树形结构数据
将类似如下数据转换成树形的数据 [{ id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1', ...
- 用java代码将从数据库中取出的具有父子关系的数据转成json格式
思路:①.取出数据中的所有父节点放入一个集合中②.取出数据中所有为该父节点的子节点放入另一个集合中③.用到迭代的方法将子节点一层一层的遍历工具类:package com.assasion.test;i ...
- C# 把带有父子关系的数据转化为------树形结构的数据 ,以及 找出父子级关系的数据中里面的根数据Id
紧接上一篇,将List<Menu>的扁平结构数据, 转换成树形结构的数据 返回给前端 , 废话不多说,开撸! --------------------- 步骤: 1. 建 Menu ...
- laravel数据库查询返回的数据形式
版本:laravel5.4+ 问题描述:laravel数据库查询返回的数据不是单纯的数组形式,而是数组与类似stdClass Object这种对象的结合体,即使在查询构造器中调用了toArray(), ...
- yii2.0数据库查询修改等方法
yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作. 查询:(这里最前面的Test是引用的模型名) Test::find()->all(); 此方法返回所有数据: Tes ...
- iBatis.Net(C#)数据库查询
引用请注明http://www.cnblogs.com/13590/archive/2013/03/14/2958735.html 摘要:查询是数据库SQL语言的核心,本文介绍了通过iBatis.N ...
- 50种方法优化SQL Server数据库查询
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...
- 转载 50种方法优化SQL Server数据库查询
原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...
- Python中的Django框架中prefetch_related()函数对数据库查询的优化
实例的背景说明 假定一个个人信息系统,需要记录系统中各个人的故乡.居住地.以及到过的城市.数据库设计如下: Models.py 内容如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 1 ...
随机推荐
- CentOS虚拟化尝试
KVM ///确认cpu是否支持kvm,确认支持,主板还得开启VT和HT egrep '(vmx|svm)' --color=always /proc/cpuinfo ///yum安装rpm包 yum ...
- 02-Python里字符串的常用操作方法--split()函数和join()函数
1.split() --分割,返回一个列表, 会丢失分割字符 实例: my_str = 'you and me and he' list01 = my_str.split('and') list02 ...
- 前端vue小知识点
前端转后端Json数据 this.orderList=JSON.parse(resp.parameter)
- fist-第九天冲刺随笔
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...
- 小米ICPC第一场自闭记
这次终于找到了靠谱队友,比之前我做不出来==队友做不出来好太多了 昨天3人热身赛疯狂杀了8道题,感觉今天稳了 一开始就瞅了A题,发现似乎可以dp,看了看数据,1e7,大概想出了nsqrtn算法,想着肯 ...
- 区块链学习1:Merkle树(默克尔树)和Merkle根
☞ ░ 前往老猿Python博文目录 ░ 一.简介 默克尔树(Merkle tree,MT)又翻译为梅克尔树,是一种哈希二叉树,树的根就是Merkle根. 关于Merkle树老猿推荐大家阅读<M ...
- PyQt(Python+Qt)学习随笔:QTreeView树形视图的rootIsDecorated属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.属性说明 QTreeView树形视图的rootIsDecorated属性用于控制是否展示对顶层项 ...
- PyQt(Python+Qt)学习随笔:部件的minimumSize、minimumSizeHint之间的区别与联系
1.minimumSize是一个部件设置的最小值,minimumSizeHint是部件Qt建议的最小值: 2.minimumSizeHint是必须在布局中的部件才有效,如果是窗口,必须窗口设置了布局才 ...
- 一台电脑上同时安装python2和python3
被python2的编码问题整的快晕了,python3对编码问题解决的不错 所以想安装下python3,但由于目前企业大多还是用python2,所以不想卸载2,让python2和python3共存. 本 ...
- 【CSP-S 2019】树的重心(重心的性质)
Description 给定一颗 \(n\) 个顶点的树 \(\text T\),共 \(n-1\) 次断边操作,每次将树分为两部分 \(\text T_1, \text T_2\),求: \[\su ...