mysql 实现 start with
自己写service----> 传入map(idsql,rssql,prior) idsql 查询id rssql 查询结果集 调用 以下方法
@param ids 要查询的起始 start with 
	 * @param allres  包含要递归数据的结果集 ( 查询时别名ID PID )
	 * @param pos    prior--->    UP or DOWN
	 * @return
	 */
	public static List<Map<String, Object>> getTree(ArrayList<String> ids,
			List<Map<String, Object>> allres,String pos) {
		List<Map<String, Object>> res=new ArrayList<Map<String,Object>>();
if("up".equals(pos)){
			 res=toCreatTreeUp(ids,allres,res);
		 }
		 if("down".equals(pos)){
			 res=toCreatTreeDown(ids,allres,res);
		 }
		 return res;
		}
	private static List<Map<String, Object>> toCreatTreeUp(ArrayList<String> ids,
		List<Map<String, Object>> allres,List<Map<String, Object>> res) {
		ArrayList<String> idss = new ArrayList<String>();
		for(String id :ids){
			   for (Map<String, Object> map : allres) {
				   if(id.equals(map.get("ID").toString())){
					   idss.add(map.get("PID").toString());
					   res.add(map);
			         }
		       }
		   }
		if (idss.size()!=0) {
			ids = idss;
			res = toCreatTreeUp(ids,allres,res);
		}
		return res ;
	}
	private static List<Map<String, Object>> toCreatTreeDown(ArrayList<String> ids,
			List<Map<String, Object>> allres,List<Map<String, Object>> res) {
			ArrayList<String> idss = new ArrayList<String>();
			for(String id :ids){
				   for (Map<String, Object> map : allres) {
					   if(id.equals(map.get("ID").toString())){
						   res.add(map);
					   }
					   if(id.equals(map.get("PID").toString())){
						   idss.add(map.get("ID").toString());
				       }
			       }
			   }
			if (idss.size()!=0) {
				ids = idss;
				res = toCreatTreeDown(ids,allres,res);
			}
			return res ;
	}
mysql 实现 start with的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
		Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ... 
- mysql每秒最多能插入多少条数据 ? 死磕性能压测
		前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ... 
- LINUX篇,设置MYSQL远程访问实用版
		每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ... 
- nodejs进阶(6)—连接MySQL数据库
		1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ... 
- MySQL高级知识- MySQL的架构介绍
		[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ... 
- 闰秒导致MySQL服务器的CPU sys过高
		今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ... 
- 我的MYSQL学习心得(一) 简单语法
		我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ... 
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
		将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ... 
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
		首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ... 
- 当忘记mysql数据库密码时如何进行修改
		因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ... 
随机推荐
- QStandardItemModel-Delegate
			//delete.h #ifndef DELEGATE_H #define DELEGATE_H #include<QItemDelegate> #include<QModelInd ... 
- sys.stdout.write与sys.sterr.write(二)
			目标: 1.使用sys.stdout.write模拟火车道轨迹变化过程 2.使用sys.stderr.write模拟火车道轨迹变化过程 1.sys.stdout.write模拟火车道轨迹变化 代码如下 ... 
- IE中cookie问题,带下划线的前置域名会不给设cookie,谷歌和火狐浏览器则不受影响
			!! WARNING !!: Server hostname contains an underscore and this response sets a cookie. Internet Expl ... 
- react 调用 native 的callShareAllFunc()方法,实现分享
			let shareName = { '0': '微信', '1': '朋友圈', '2': '新浪微博', '3': ' QQ', '4': 'QQ空间'};render(){ //分享YztApp. ... 
- mySql 注入攻击
			注入攻击 1.原理: a.只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入; b.字符串拼接和没有判断用户输入是否合法------>导致用户可以玩填字游戏-----> ... 
- 小Q系列之失恋
			这个题其实不难 仔细想想,, 注意题中要求的是一天是12个小时 #include<algorithm> #include<stdio.h> #include<math. ... 
- left join on 和where条件的放置
			先看个例子 以下P1与S1是一对多的关系 结果分别是:1746,1748,1748,1277525,307 由此看出: P1 left join S1 on ... and ...是将S1表中数据先过 ... 
- Java中String、StringBuffer、StringBuilder区别与理解
			一.先比较String.StringBuffer.StringBuilder变量的HashCode值 使用System.out.println(obj.hashcode())输出的时对象的哈希码, 而 ... 
- Java中关于先有鸡还是先有蛋的问题----Class&Object
			在Java中,我们常常会看到一个类型:Class.并且在类似Person.class,cache.getClass()等代码中见到它的身影. 众所周知,Class是用来描述一个类的类型,而Object ... 
- maven官方库中没有oracle jdbc驱动的问题解决
			1.找到可用的oracle jdbs驱动jar包文件,放置到指定目录(可根据实际自定义) D:\jdbc\ojdbc14.jar 2.安装好maven,主要是配置好环境变量 MAVEN_HOME='指 ... 
