*************************************************************

@Override
public List<Organization> getOrganizationTree() throws UnionException {//缓存有就从缓存拿List<Organization> redisObjectOrganizationList = (List<Organization>) redisObjectUtil2.getListObject(assembleRedisKeyOrganizationTree() );if(!CollectionUtils.isEmpty(redisObjectOrganizationList)){return redisObjectOrganizationList;}List<Organization> organizationTreeList = new ArrayList<>();Organization organizationTree = new Organization();List<Organization> allOrganization = getOrganizationAndChildrenById(0L);//目录无限制for (Organization organizationItem : allOrganization) {//第一层if (organizationItem.getPid().equals(0L)) {organizationTree = organizationItem;organizationTree.setOrganizationTreeList(this.getSonOrganizationList(organizationItem.getId(),allOrganization));organizationTreeList.add(organizationTree);}}//数据库查询出来  设置到缓存当中redisObjectUtil2.setListObject(assembleRedisKeyOrganizationTree() ,organizationTreeList);return organizationTreeList;
}private List<Organization> getSonOrganizationList(Long id ,List<Organization> allOrganization) {List<Organization> listvo = new ArrayList<>();for (Organization organizationItem : allOrganization) {//找到父级相同的下级if (organizationItem.getPid().equals(id)) {listvo.add(organizationItem);}}if(!CollectionUtils.isEmpty(listvo)){for(Organization vo:listvo){vo.setOrganizationTreeList(getSonOrganizationList(vo.getId(),allOrganization));}}return listvo;
}

**********************************************************************

@Data
@ApiModel(value = "组织机构信息")
public class Organization implements Serializable {@ApiModelProperty(name = "主键id")@JSONField(serializeUsing = ToStringSerializer.class)private Long id;@ApiModelProperty(name = "父主键id")@JSONField(serializeUsing = ToStringSerializer.class)private Long pid;@ApiModelProperty(name = "组织编号")private String code;@ApiModelProperty(name = "组织名称",notes = "长度100",required = true)@NotEmpty@Length(min = 1,max = 100)private String name;@ApiModelProperty(name = "排名")private Integer rank1;@ApiModelProperty(name = "是否有效")@Length(min = 1,max = 1)private String isEnable;@ApiModelProperty(name = "是否删除")@Length(min = 1,max = 1)private String isDeleted;@ApiModelProperty(name = "创建时间")private Date createTime;@ApiModelProperty(name = "更新时间")private Date updateTime;private List<Organization> organizationTreeList;/***      重写equals 和hashcode方法*      alt+insert   之选择id就好了  只要id重复就是重复*/@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Organization that = (Organization) o;return id.equals(that.id);}@Overridepublic int hashCode() {return Objects.hash(id);}}

*************************************************************************

java 一次查询数据库生成树形结构

2019-01-29 00:36:05 suhongliang 阅读数 425更多

分类专栏: IT管理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/suhongliang/article/details/86684787

@Override
public ResultObj getMenu() throws Exception {MenuDomain resultMenuDomain = new MenuDomain();List<MenuDomain> allMenu = menuDao.getMenu();//目录无限制for (MenuDomain menuItem : allMenu) {//第一层if (menuItem.getPid() == 0) {resultMenuDomain = menuItem;resultMenuDomain.setList(this.getSonMenuList(menuItem.getId(),allMenu));}}ResultObj resultObj = new ResultObj();return resultObj;
}private List<MenuDomain> getSonMenuList(Integer id ,List<MenuDomain> allMenu) {List<MenuDomain> listvo = new ArrayList<>();for (MenuDomain menuItem : allMenu) {if (menuItem.getPid() == id) {//找到父级相同的下级listvo.add(menuItem);}}if(listvo.size() > 0){for(MenuDomain vo:listvo){vo.setList(getSonMenuList(vo.getId(),allMenu));}}return listvo;
}

一次性加载树结构数据表 mapper加载相关推荐

  1. python爬取js加载的数据_JS动态加载数据不会爬?老司机教你两个方法爬取想要的数据...

    学习Python的人绝大部分都是在用Python做爬虫,毕竟对于爬虫而言Python是不二选. 但是一般简单的静态页面网站还是很好爬取的,对于很多动态加载的网站就不知道怎么办了,今天小编就给大家介绍两 ...

  2. 微信小程序上拉加载 加载更多数据 触底加载 点击加载更多数据

    开发需求 进入页面,加载初始数据,当向上拖动页面至底部,自动加载新的数据,即上拉加载更多数据. 演示 index.wxml <!-- 数据列表 --> <view wx:for=&q ...

  3. js控制css 加载,CSS样式表的加载对于DOM解析,渲染,JS执行的阻塞问题

    CSS加载问题 css加载会不会阻塞DOM树的解析? css加载会不会阻塞DOM树的渲染? css加载会不会阻塞后面js语句的执行? css阻塞 h1 { color: red !important ...

  4. tp3数据表新加了一个字段,怎么插都插不进去

  5. 微信小程序实现上拉加载更多数据(分页加载)

    前言: 该实例和我其他两篇文章息息相关,不清楚的可以先做功课 Vant Weapp小程序 UI 组件库 https://blog.csdn.net/qq_36303853/article/detail ...

  6. 自制预防校园暴力的智能监控系统:远程加载表格数据,SQLAlchemy操作数据库,云服务器(CentOS)

    本文是[小码哥李明杰老师]指导完成的山东大学引航计划公益人工智能科研实训项目. 自制预防校园暴力的智能监控系统 重定向路径 路由配置(访问根路径,直接重定向到main): export default ...

  7. ExtJs TreePanel 不能加载ashx数据的解决办法

    今天学习Extjs TreePanel 时在加载动态数据时经常加载不进来,因为我是使用MVC2获取动态数据的,单独调试MVC的返回数据时OK的,网上有很多解决方案,其中最简单的是: loader: n ...

  8. python读取第二行_使用Python操作Excel(二):读取数据表

    上一节我们提到,使用openpyxl可以方便的对数据表进行操作,例如:抽象Excel数据并存入数据库 将数据库数据导出到Excel 给一个已存在的数据表追加信息 我们还介绍了一些Excel的基本术语, ...

  9. 多表联查加载zTree树结构

    zTree简单的数据加载就是 查询数据的id和pId ,然后在setting里边设置idKey和pIdKey就可以了. 最近写多表查询的时候就懵了,因为表之间有关联关系 ,我用的是三张表, 有外键关系 ...

最新文章

  1. swift中delegate与block的反向传值
  2. 北大华为鹏城联合首次提出视觉 Transformer 后量化算法!
  3. Linux-系统时钟
  4. [three.js]学习笔记
  5. PhotoShop算法原理解析系列 - 像素化---》碎片。
  6. HCTL-2020正交码读写芯片
  7. 扩展坞可以把手机投到显示器吗_你的电脑可以省了!华为Mate 30搭配绿联新一代扩展坞轻松变电脑...
  8. 基于Spring-Data-Redis存储JavaBean对象
  9. 从零开始搭建spring-cloud(2) ----ribbon
  10. 数论 —— 线性同余方程组与中国剩余定理
  11. shell建设告警系统
  12. 深度学习相关优化器以及在tensorflow的使用(转)
  13. I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking
  14. java中的关键字有哪些_java关键字有哪些?java关键字大全
  15. 用javacv提取视频中的音频数据
  16. 高校先行,科技部公示10个国家级区块链重点项目 | 产业区块链发展周报
  17. FIL存储服务器订单系统,开源存储系统Slate构建FIL检索市场
  18. 2011斯坦福大学iOS应用开发教程学习笔记(第六课)故事版
  19. 论文研读 —— 4. You Only Look Once Unified, Real-Time Object Detection (3/3)
  20. [200127] Java类初始化与实例初始化 - Thinking in Java学习日志

热门文章

  1. Convex Hull (ACM-ICPC 2018 沈阳赛区网络预赛) 存个公式
  2. AtCoder Regular Contest 059
  3. 【PKUSC2018】星际穿越【结论】【倍增dp】
  4. FFT:从入门到沉迷
  5. [BZOJ2616] SPOJ PERIODNI
  6. 牛客题霸 车站建造问题 C++题解/答案
  7. 牛客网 【每日一题】5月28日题目精讲 Protecting the Flowers
  8. [学习笔记] 二次剩余
  9. RMQ问题:与众不同(st表的高端应用)
  10. codeforces1167 E. Range Deleting(双指针)