递归里面不会写...求高手! 本帖最后由 tanshulin520 于 2011-10-12 22:11:16 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看你的写法,这行代码应该只查第一层的数据?List<product> list = pd.GetProductDao(); 我觉得要递归遍历,多次查询数据库,每次的id后变成parentid再查询 看我们项目数据:最上层:1 WB C 1依次:2 WB Ca 1 4 WB Cab 0 5 WB Cac 022 WB Cb 1 23 WB Cba 0 25 WB Cbc 0说明:c下面包含ca,cb,这些数据均在一张表中,ca下面有cab,cac等等,后面的1和0表示是否拥有子层级即:是否已经是最下层。。每次根据点击传递树状上层代码,模糊查询下一级。通过每次为模糊查询条件增加一级来查第二种方式:最上层1 20057 G0114 G 1 2 20058 G0119 G 1 3 20059 G0084 G 1依次:1 20054 G0110 G0084 12 20056 G0113 G0084 13 20048 G0102 G0084 1依次:1 20053 G0103 G0102 0这些数据在一张表中,最上层G,下面包括G0084,再下面包括G0102,根据后面1和0判断是否还有下层。。即最下层。。每次根据点击传递上层树状代码,查询下级代码、两种方式都可以 忘记贴递归了: /** * @param PostCode * 根据父节点获取所有子节点岗位编号 * @return 树的子结点集合 */ @SuppressWarnings("unchecked") public List<JobType> getPostCodeChilds(String postCode) { List<JobType> ret = new ArrayList<JobType>(); List<JobType> retRecursive = null; List<JobType> children = getChildrenNodes(postCode); for(JobType job0 : children){ String displayOrder = job0.getDisplyOrder(); if(!CommUtil.isNull(displayOrder) && displayOrder.equals("po")){ ret.add(job0); }else{ retRecursive = getPostCodeChilds(job0.getJobTypeCode()); if(ret.size() == 0){ ret = retRecursive; }else{ ret.addAll(retRecursive); } } } return ret; }红色部分为传递上层节点 查询数据库,得出下层节点。。蓝色部分为递归调用,,反复查询下面所有的节点。。根据displayOrder参数为判断是否还有下一级没有的话 单层就不再递归。。知道所有的都没有下一级,,,就是最终的数据。 insert into product values(9990008,'军事类',null);insert into product values(9990009,'军事1',9990008);insert into product values( 9990009 ,'军事2',9990008);insert into product values(9990010,'军事1-1-1',9990009);这个表因该是字段id,名字,父id,直接查询不就好了嘛,用什么递归啊 lz那个表中的数据来看 ,上面我已经说明了。。不满足递归的条件我上面举了两个例子。。第二个例子是通过递归查询实现的,第一个通过模糊查询实现两种实现方式的数据不一样。。LZ那样的数据无法递归。。数据没有什么特别做起来难度较大 关于统计短信总数的问题 birt报表导出问题 Java怎样能把Oracle的Blob类型的内容导出到本地? STRUTS小问题...求高手帮解决.. 关于删除的问题. ireport的问题! 菜菜问菜菜问题 tomcat的版本差异? JB9的Struts更新为1.1之后的问题!! 对于:ctx.lookup("java:comp/env/ejb/XXXXHome")这一句,其中java:comp/env/ejb的意思指的是什么??? div 加滚动条 滚动的时候页面卡的很是怎么回事? 我用Spring控制Hibernate,但无法自动生成数据库,这是日志,求解!
List<product> list = pd.GetProductDao();
最上层:
1 WB C 1
依次:
2 WB Ca 1
4 WB Cab 0
5 WB Cac 0
22 WB Cb 1
23 WB Cba 0
25 WB Cbc 0
说明:c下面包含ca,cb,
这些数据均在一张表中,ca下面有cab,cac等等,后面的1和0表示是否拥有子层级即:是否已经是最下层。。
每次根据点击传递树状上层代码,模糊查询下一级。通过每次为模糊查询条件增加一级来查
第二种方式:
最上层
1 20057 G0114 G 1
2 20058 G0119 G 1
3 20059 G0084 G 1
依次:
1 20054 G0110 G0084 1
2 20056 G0113 G0084 1
3 20048 G0102 G0084 1
依次:
1 20053 G0103 G0102 0
这些数据在一张表中,最上层G,下面包括G0084,再下面包括G0102,根据后面1和0判断是否还有下层。。即最下层。。
每次根据点击传递上层树状代码,查询下级代码、两种方式都可以
/**
* @param PostCode
* 根据父节点获取所有子节点岗位编号
* @return 树的子结点集合
*/
@SuppressWarnings("unchecked")
public List<JobType> getPostCodeChilds(String postCode) {
List<JobType> ret = new ArrayList<JobType>();
List<JobType> retRecursive = null;
List<JobType> children = getChildrenNodes(postCode); for(JobType job0 : children){
String displayOrder = job0.getDisplyOrder();
if(!CommUtil.isNull(displayOrder) && displayOrder.equals("po")){
ret.add(job0);
}else{
retRecursive = getPostCodeChilds(job0.getJobTypeCode());
if(ret.size() == 0){
ret = retRecursive;
}else{
ret.addAll(retRecursive);
}
}
}
return ret;
}红色部分为传递上层节点 查询数据库,得出下层节点。。
蓝色部分为递归调用,,反复查询下面所有的节点。。
根据displayOrder参数为判断是否还有下一级
没有的话 单层就不再递归。。知道所有的都没有下一级,,,就是最终的数据。
insert into product values(9990009,'军事1',9990008);
insert into product values( 9990009 ,'军事2',9990008);
insert into product values(9990010,'军事1-1-1',9990009);
这个表因该是字段id,名字,父id,直接查询不就好了嘛,用什么递归啊
我上面举了两个例子。。第二个例子是通过递归查询实现的,第一个通过模糊查询实现
两种实现方式的数据不一样。。LZ那样的数据无法递归。。数据没有什么特别做起来难度较大