一次性加载树结构数据表 mapper加载

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

@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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DIP原则、IoC以及DI

一、DIP原则 高层模块不应该依赖于底层模块&#xff0c;二者都应该依赖于抽象。抽象不应该依赖于细节&#xff0c;细节应该依赖于抽象。 该原则理解起来稍微有点抽象&#xff0c;我们可以将该原则通俗的理解为&#xff1a;"依赖于抽象”。 该规则告诉我们&#xff0c;程序…

Java IO最详解

转载自 Java IO最详解初学java&#xff0c;一直搞不懂java里面的io关系&#xff0c;在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术&#xff0c;所以自己来整理一下&#xff0c;有错的话请指正&#xff0c;也希望大家提出宝贵意见…

hibernate在分层架构中修改数据(update)时遇到的问题!!

开发软件&#xff1a;Myeclipse 10.0 数据库&#xff1a;oracle 开发人员&#xff1a;1111 问题简单描述&#xff1a;修改数据的时候不能正常修改&#xff0c;要么修改不成功&#xff0c;要么报错 nice,下面就来看看怎么解决这个bug的。 首先&#xff0c;我做的是一个租房网站&…

intellij idea 如何一键清除所有断点

intellij idea 如何一键清除所有断点 2017-06-19 11:37:20 yanziit 阅读数 50429更多 分类专栏&#xff1a; idea工具 我之前写了一个百度经验,但是搜不到,现在复制一遍,自己留个记录. 注:此方法适用 intellij idea 2016.2.5版本,其他版本我没用过,暂时不知道 1.在idea左下…

整理下.net分布式系统架构的思路

最近看到有部分招聘信息&#xff0c;要求应聘者说一下分布式系统架构的思路。今天早晨正好有些时间&#xff0c;我也把我们实际在.net方面网站架构的演化路线整理一下&#xff0c;只是我自己的一些想法&#xff0c;欢迎大家批评指正。 首先说明的是.net下开源内容较少&#xff…

SQL注入问题及预防方法

SQL注入问题 sql存在漏洞&#xff0c;会被攻击导致数据泄露 SQL会被拼接 or package com.kuang.lesson02; import com.kuang.lesson02.utils.jdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; …

Java transient关键字使用小记

转载自 Java transient关键字使用小记1. transient的作用及使用方法我们都知道一个对象只要实现了Serilizable接口&#xff0c;这个对象就可以被序列化&#xff0c;java的这种序列化模式为开发者提供了很多便利&#xff0c;我们可以不必关系具体序列化的过程&#xff0c;只要…

mysql sample函数_Oracle SAMPLE 语法应用

Sample抽样函数用于支持数据挖掘。Sample 函数使得数据分析操作在样本数据上进行&#xff0c;而不是在整张表上进行。Sample抽样函数用于支持数据挖掘。Sample 函数使得数据分析操作在样本数据上进行&#xff0c;而不是在整张表上进行。选择10%的记录select * from atest sampl…

docker 买了腾讯服务器后的学习

腾讯云买了 打算用 登录成功后&#xff1a; Last login: Mon Nov 11 13:37:02 2019 from 221.12.17.87 [rootVM_0_13_centos ~]# ip addr #查看ip地址 [rootVM_0_13_centos ~]# uname -r #查看centeros内核版本 docker要求 centeros内核在3.10以上 3.10.0-862.e…

Hibernate中使用Criteria查询及注解——(Dept.java)

Dept.java: 部门表的实体类&#xff1a; package cn.bdqn.hibernate_Criteria.entity;import java.util.HashSet; import java.util.Set;/*** 部门表的实体类* author 1111**/ public class Dept implements java.io.Serializable {// Fieldsprivate Integer deptno;private St…

Connect 2016 白话脱口秀将在B站直播,我们的口号是quot; 微软大法好quot;

今年 Connect 大会的主题是 Big possibilities. Bold technology. 北京时间 11月16日 23&#xff1a;00&#xff0c;Connect();//2016 将开启在线直播&#xff0c;届时红衣主教 Scott Guthrie 和 Scott Hanselman 携众多微软技术大咖将为大家带来超级精彩的主题演讲。丰富的内容…

MySQL(笔记)

数据库总览 有时候查的数据错乱&#xff0c;可以重启MySQL 关系型数据库 ( SQL ) MySQL , Oracle , SQL Server , SQLite , DB2 , …关系型数据库通过外键关联来建立表与表之间的关系 非关系型数据库 ( NOSQL )not only Redis , MongoDB , …非关系型数据库通常指数据以对…

第10章尚硅谷SpringBoot检索

第10章尚硅谷SpringBoot检索 P20、尚硅谷-SpringBoot高级-检索-Elasticsearch简介&安装 P21、尚硅谷-SpringBoot高级-检索-Elasticsearch快速入门 P22、尚硅谷-SpringBoot高级-检索-SpringBoot整合Jest操作ES P23、尚硅谷-SpringBoot高级-检索-整合SpringDataElasticsearch…

python 高维数据_Python数据分析入门|利用NumPy高效处理高维数据

矢量化NumPy数组可以将许多数据处理任务表述为简洁的数组表达式&#xff0c;否则需要编写循环。用数组表达式代替循环的做法&#xff0c;通常被称为矢量化。通常矢量化数组运算要比等价的纯Python方式快上一两个数量级&#xff0c;尤其是各种数值计算。假设我们想要在一组值(网…

Hi Visual Studio for Mac

今晚Connect 2016 , 或者你会兴奋地看到Visual Studio 2017在Docker上调试 &#xff0c; MS SQL on Linux &#xff0c;Azure Functions 还有一堆黑技术....但个人还是十分喜欢一个新产品Visual Studio for Mac 。 八个多月前微软收购了Xamarin, 对于Xamarin 的IDE进行了整合&a…

Python3总结

一、输入输出 &#xff08;1&#xff09;控制台输入 input(promptNone) &#xff08;2&#xff09;控制台输出 print([obj1,...][,sep ][,end\n][,filesys.stdout][,flushFalse])二、数据类型 &#xff08;1&#xff09;整数 class int(x, base10) &#xff08;2&#xff09;浮…

Hibernate中使用Criteria查询及注解——(Emp.java)

Emp.java 员工表的实体类&#xff1a; package cn.bdqn.hibernate_Criteria.entity;import java.util.Date;/*** 员工表的实体类* author Administrator**/ public class Emp implements java.io.Serializable {private Integer empno;private Dept dept;private String ename;…

docker 安装elasticsearch

1.安装jdk $ docker pull openjdk $ docker run -d -it --name myopenjdk openjdk /bin/bash 2.安装elasticsearch docker run -d -p 9200:9200 --name"es" -e ES_JAVA_OPTS"-Xms256m -Xmx256m" elasticsearch:5.6 docker pull elasticsearc…

list 置顶元素_java集合指定元素排序:最前,按照提供的顺序排序?求算法

哈哈哈&#xff0c;不好意思&#xff0c;问了题主那么久...根据我获得需求描述&#xff0c;最后我还是觉得引用新的编程元素来使业务稍微变简单的&#xff0c;我整理到需求应该是&#xff1a;首先给定一个指定关键字的排序&#xff0c;给出一个字符串列表&#xff0c;对列表进行…

Connect 大会的主题 ---微软大法好

今年 Connect 大会的主题是 Big possibilities. Bold technology. 北京时间 11月16日 23&#xff1a;00&#xff0c;Connect();//2016 开始了,红衣主教 Scott Guthrie 和 Scott Hanselman 携众多微软技术大咖将为大家带来超级精彩的主题演讲。Visual Studio 2017在Docker上调试…