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