查询部门----返回给前台TreeView数据格式的数据
实体类:
public class AddressTreeDto {
private Long id;
private String text;//位置名称
private Long pId;//上一级
private Integer able;
private List<AddressTreeDto> nodes;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Long getpId() {
return pId;
}
public void setpId(Long pId) {
this.pId = pId;
}
public Integer getAble() {
return able;
}
public void setAble(Integer able) {
this.able = able;
}
public List<AddressTreeDto> getNodes() {
return nodes;
}
public void setNodes(List<AddressTreeDto> nodes) {
this.nodes = nodes;
}
}
Service接口:
public interface AddressService {
//查询所有存放地,返回TreeView数据格式
List<AddressTreeDto> getAddressTree();
}
ServiceImpl实现类
public class AddressServiceImpl implements AddressService {
@Autowired
private AddressMapper addressMapper;
private List<AddressTreeDto> getChild(Long id, List<AddressTreeDto> rootAddress) {
// 子菜单
List<AddressTreeDto> childList = new ArrayList<>();
for (AddressTreeDto treeDto : rootAddress) {
// 遍历所有节点,将父菜单id与传过来的id比较
if (treeDto.getpId()!=null) {
if (treeDto.getpId().equals(id)) {
childList.add(treeDto);
}
}
}
// 把子菜单的子菜单再循环一遍
for (AddressTreeDto treeDto: childList) {
// 没有url子菜单还有子菜单---判断还有子菜单
if(getIds(treeDto.getId())!=null){
//递归
treeDto.setNodes(getChild(treeDto.getId(),rootAddress));
}
} // 递归退出条件
if (childList.size() == 0) {
return null;
}
return childList;
}
@Override
public List<AddressTreeDto> getAddressTree() {
// 原始的数据
List<AddressTreeDto> rootAddress = addressMapper.selectTree(Constants.ABLE_CONFIG.DEFAULT_ABLE);
// 查看结果
for (AddressTreeDto treeDto1 : rootAddress) {
System.out.println(treeDto1);
}
// 最后的结果
List<AddressTreeDto> addressList = new ArrayList<>();
// 先找到所有的一级菜单
for (int i = 0; i < rootAddress.size(); i++) {
// 一级菜单没有parentId
if (rootAddress.get(i).getpId()==0) {
addressList.add(rootAddress.get(i));
}
}
// 为一级菜单设置子菜单,getChild是递归调用的
for (AddressTreeDto treeDto1 : addressList) {
treeDto1.setNodes(getChild(treeDto1.getId(), rootAddress));
}
return addressList;
}
}
查询部门----返回给前台TreeView数据格式的数据的更多相关文章
- js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中
ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId ...
- <MyBatis>入门五 查询的返回值处理
select : 返回对象: <select id = " " resultType= "对象的全类名" /> List: <sele ...
- Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据
Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1. 配置条件字段@Conditional 1 1 2. 2. 配置条件字段 ...
- 部门树形结构,使用Treeview控件显示部门
部门树形结构.设计张部门表用于存储部门编码.名称.上级部门id,使用Treeview控件显示部门树,并实现部门增删改.移动.折叠等功能.特别提示,部门有层级关系,可用donetbar的adtree控件 ...
- PDO 查询mysql返回字段整型变为String型解决方法
PDO 查询mysql返回字段整型变为String型解决方法 使用PDO查询mysql数据库时,执行prepare,execute后,返回的字段数据全都变为字符型. 例如id在数据库中是Int的,查询 ...
- **CI两种方式查询所返回的结果数量
区别:第一个是有条件的:第二个没有条件 $this->db->count_all_results(); 允许你获得某个特定的Active Record查询所返回的结果数量.可以使用Acti ...
- Atitit.列表页and查询条件的最佳实践(1)------设定搜索条件and提交查询and返回json数据
Atitit.列表页and查询条件的最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1. 配置条件字段@Conditional 1 1 2. 2. 配置条件字段显示类 ...
- Linq to Sql:N层应用中的查询(上) : 返回自定义实体
原文:Linq to Sql:N层应用中的查询(上) : 返回自定义实体 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候,我们使 ...
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理-1
第一篇:官方文档的处理方法,摘自官方 在迁移原先用JDBC/SQL实现的系统,难免需要采用hibernat native sql支持. 1.使用SQLQuery hibernate对原生SQL查询执行 ...
随机推荐
- 深入理解Intent和IntentFiler(一)
http://blog.csdn.net/u012637501/article/details/41080891 为了比较深刻的理解并灵活使用Intent,我计划将这部分的学习分为两步:一是深入理解I ...
- log4j2 yml
1.log4j2默认加载文件为log4j2.xml 2.要使用yml加载需添加依赖 <!-- https://mvnrepository.com/artifact/com.fasterxml.j ...
- [USACO09JAN]安全出行Safe Travel
题目 什么神仙题啊,我怎么只会\(dsu\)啊 我们考虑一个非常暴力的操作,我们利用\(dsu\ on \ tree\)把一棵子树内部的非树边都搞出来,用一个堆来存储 我们从堆顶开始暴力所有的边,如果 ...
- php递归无限级
function getTree($data, $pId) { $tree = ''; foreach($data as $k => $v) { if($v['cate_ParentId'] = ...
- P1-Linux下安装MySQL及登录用户配置
Linux下安装MySQL及登录用户配置 环境:Centos7.4 Mysql5.6 1. 查询是否安装 MySQL和MariaDB rpm -qa | grep -i mysql rpm -q ...
- docker官方文档笔记
Docker在 CentOS7.X上运行.Docker可能在其他EL7的兼容版本中成功安装,但是官方并未进行测试,因此也不提供任何支持. 系统环境要求 docker必须运行在64-bit的系统上,对于 ...
- 【Codeforces 17E】Palisection
Codeforces 17 E 题意:给一个串,求其中回文子串交叉的对数. 思路1:用哈希解决.首先求出每个点左右最长的回文串(要分奇数长度和偶数长度),然后记录经过每个点的回文串的个数,以及它们是在 ...
- JavaScript设计模式 - 订阅发布模式(观察者模式)
var Event = (function() { var global = this, Event, _default = 'default'; Event = function() { var _ ...
- java JDK安装教程
JAVA_HOME G:\JDK\java7\jdk1.7.0_80 根据自己的哈 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 然后找到CLASSPATH ...
- Luogu3320 SDOI2015 寻宝游戏 链并
传送门 可以发现从哪里开始的最优答案都是一样的.我们只需要用一种比较好维护的方法维护答案就好了. 我们考虑用$dfs$序加上$set$维护链并.先预处理$dfs$序,将当前有宝藏的点丢入$set$中, ...