数据库多层数据运用递归算法生成树形数据
来源:互联网 发布:vc 多线程编程 编辑:程序博客网 时间:2024/06/05 06:46
第一步:准备表结构及对应的表数据
1.表结构
create table City
(
id char(32) not null,
name varchar2(30),
parent_id char(32) //父级字段
)
2.插入数据
insert into City (id, name, parent_id) values (1, '书籍', 0);
insert into City (id, name, parent_id) values (2, '科普书籍', 1);
insert into City (id, name, parent_id) values (3, '教科书籍', 1);
insert into City (id, name, parent_id) values (4, '童话书籍', 1);
insert into City (id, name, parent_id) values (5, '语文', 3);
insert into City (id, name, parent_id) values (6, '数学', 3);
insert into City (id, name, parent_id) values (7, '九年级上册语文书', 5);
insert into City (id, name, parent_id) values (8, '九年级下册语文书', 5);
insert into City (id, name, parent_id) values (9, '九年级上册数学书', 6);
insert into City (id, name, parent_id) values (10, '九年级下册数学书', 6);
insert into City (id, name, parent_id) values (11, '十万个为什么', 2);
insert into City (id, name, parent_id) values (12, '格林童话', 4);
第二步:建立Entity的Bean对象
1.建立Bean
public class CityEntity implements Serializable {
private String id;
private String name;
private String parent_id;
//getter,setter
}
2.建立对外输出的响应Bean
public class CityResponse {
private String id;
private String name;
private String parent_id;
private List children = new ArrayList();
//getter,setter
public CityResponse() {
}
public CityResponse(CityEntity entity) {
this.set(entity);
}
public CityResponse set(CityEntity entity) {
this.id = entity.getId;
this.name = entity.getName;
this.parentId = entity.getParentId;
return this;
}
}
第三步 进行递归遍历,生成树形接口
1.测试代码:
public class CityTest {
@Test
public void cityTree() throws Exception{
System.out.println(recursiveTree(1));
}
2.递归方法
public CityResponse getTreeModule(String id) throws Exception {
CityResponse firstTreeResponse = new CityResponse();
//根据id获取节点对象(SELECT * FROM City c WHERE c.id=?)
CityEntity entity = cityService.findById(id);
firstTreeResponse.set(entity);
//查询id下的所有子节点(SELECT * FROM City c WHERE c.parent_id=?)
List<CityEntity> entities = cityService.findByParentId(id);
List<CityResponse> treeResponses = new ArrayList<CityResponse>();
CityResponse secondTreeResponse = null;
for (CityEntity cityEntity : entities) {
secondTreeResponse = new CityResponse();
treeResponses.add(secondTreeResponse.set(CityEntity));
}
CityResponse cityTreeResponse = null;
for (CityResponse child : treeResponses) {
cityTreeResponse = getTreeModule(child.getId());//开始递归
firstTreeResponse.getChildren().add(cityTreeResponse);
}
return firstTreeResponse;
}
3.输出(省略)
- 数据库多层数据运用递归算法生成树形数据
- 树形数据生成XML
- TreeView树形控件递归绑定数据库里的数据
- TreeView树形控件递归绑定数据库里的数据
- 递归方法实现树形数据
- SqlServer 递归查询树形数据
- SqlServer 递归查询树形数据
- SqlServer 递归查询树形数据
- SqlServer 递归查询树形数据
- SqlServer 递归查询树形数据
- EasyUI_tree根据数据库数据非迭代生成树形结构
- 从数据库读取数据动态生成树形菜单示例
- [DB][OARCLE]Oracle中树形数据(父子项数据)检索的CONNECT BY PRIOR 递归算法
- 多层数据库开发六:什么是数据集
- 多层数据库开发十二:使用数据控件
- Easyui-ComboTree数据填充,递归。树形节点
- oracle 递归 树形结构数据查询
- Easyui-ComboTree数据填充,递归。树形节点
- com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: java.security.cert.CertP
- No content to map due to end-of-input
- 使用Tomcat搭建最简单的服务器
- ubuntu控制mysql
- EventBus使用详解(二)——EventBus使用进阶
- 数据库多层数据运用递归算法生成树形数据
- PL/SQL学习笔记
- 51Nod-1454-升排列
- 4.1 Android Studio中的AndroidManifest.xml文件分析
- MySQL创建用户与授权方法
- JavaScript中+操作符的特殊性
- SpringBootAndMongodb
- 不会装cuda配环境的小学生怎么躺撸caffe
- kotlin的初始化