数据库如何导出树状图

数据库如何导出树状图,第1张

2022-04-02 16:58·字数:37·阅读:450

1、查询全量菜单(双层循环方式)

/

查询全量菜单

@return

/

@Override

public List<输出对象> querAllTree() {

loginfo("查询全量树");

// 开始时间

long stime = SystemcurrentTimeMillis();

//查询相对机构

List<对象> OrgList = baseMapperselectList(null);

// 转换输出格式

List<输出对象> resOrgList = OrgListstream()map(u -> {

输出对象 name = new 输出对象();

BeanUtilscopyProperties(u, name);

return name;

})collect(CollectorstoList());

//返回的树形结构数据

List<输出对象> trees = new ArrayList<>();

//循环菜单树形数据

for (输出对象menuTree : resOrgList) {

//菜单级别为0,则是一级数据,根据实际情况判断可修改相关关联判断

if ("00"equals(menuTreegetOrgClass())) {

treesadd(menuTree);

for (输出对象 it : resOrgList) {

//找出一级菜单下面的所有二级菜单,并加入到list中去

if (menuTreegetOrgCode()equals(itgetOrgSuperCode())) {

if (menuTreegetOrgChildrenMap() == null) {

menuTreesetOrgChildrenMap(new ArrayList<>());

}

menuTreegetOrgChildrenMap()add(it);

}

}

}

}

// 结束时间

long etime = SystemcurrentTimeMillis();

loginfo("机构数查询耗时:" + (etime - stime) + "毫秒");

return trees;

}

2、查询全量菜单(递归方式)

/

使用递归方法建树

@param menuTrees 子节点集合

@return List

/

public static List<输出对象> buildByRecursive(List<输出对象> menuTrees) {

List<输出对象> trees = new ArrayList<>();

for (输出对象 menuTree : menuTrees) {

//菜单级别为00,则是一级数据,根据实际情况判断可修改相关关联判断

if ("00"equals(menuTreegetOrgClass())) {

treesadd(findChildren(menuTree,menuTrees));

}

}

return trees;

}

/

递归查找子节点

@param menuTree 菜单数对象

@param menuTrees 子节点

@return MenuTree

/

private static 输出对象 findChildren(输出对象 menuTree,List<输出对象> menuTrees) {

for (输出对象 it : menuTrees) {

if(menuTreegetOrgCode()equals(itgetOrgSuperCode())) {

if (menuTreegetChildren() == null) {

menuTreesetChildren(new ArrayList<输出对象>());

}

menuTreegetOrgChildrenMap()add(findChildren(it,menuTrees));

}

}

return menuTree;

}

3、全部菜单树(一次循环)

/

查询全量菜单

@return

/

@Override

public List

querAllTree(TOrgInfoReq tOrgInfoReq) {

loginfo("查询全量树");

String orgPath = tOrgInfoReqgetOrgCode();

// 开始时间

long stime = SystemcurrentTimeMillis();

//查询相对机构

List

OrgList = tOrgInfoMapperqueryAllTree();

// 转换输出格式

List

不建议做单表自联结,还是用单独的映射表比较好

比如

部门表

ID 名称

部门映射表

父ID 子ID

然后通过映射表内联父子来递归出树形结构。

无分无码

根据用户的权限来产生菜单,做起来比较麻烦,我看不如设计一个统一的菜单,把所有菜单项的单击事件代码都写出来,然后在数据库中设计一个用户表,在这个表中设计这样一些字段,登录名,登录密码,权限分类编号这个编号的值也就是12345吧

建表之后,就写代码吧既然有用户权限,那肯定就有登录窗口吧,把登录窗口的创建代码,放在主窗口的创建事件中,用户在登录窗口选择自己的用户名和输入登录密码之后,这样也就获得了权限分类编号,

在取得编号的代码之后写一个case语句,如:

case

权限分类编号

of

1:begin

首先使所有菜单项能用;

禁用本权限不应该使用的菜单;

end;

2:begin

endl;

比你那个根据数据表产生菜单容易一些吧在delphi中要实现一个功能的途径有很多,不要死抱一种途径不放也就是不要老在一棵树上吊死换一棵树嘛

以上就是关于数据库如何导出树状图全部的内容,包括:数据库如何导出树状图、C#设计一个为树状结构,即部门下面还可以无限的增加子部门,在数据库中保存树状结构位置和层次、Delphi 用户权限自动生产树形菜单,数据表怎么设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9528319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存