查询部门----返回给前台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查询执行 ...
随机推荐
- C#用默认浏览器打开特定网址的几种方法
方法一:从注册表中读取默认浏览器可执行文件路径 private void button1_Click(object sender, EventArgs e) { //从注册表中读取默认浏览器可执行文件 ...
- 阿里巴巴Web前端面试的一道JS题目,求解答!!!
题目大概是这种: function outer(){ return inner; var inner = "a"; function inner(){}; inner = 9; } ...
- 使用KVM虚拟机遇到的问题(持续更新)
1.qemu-kvm.kvm.qemu 和 qemu-system-x86_64四种命令的差别 qemu 和 qemu-system-x86_64:启动qemu虚拟机的命令,x86_64为64位系统时 ...
- HDU2966 In case of failure(浅谈k-d tree)
嘟嘟嘟 题意:给定\(n\)个二维平面上的点\((x_i, y_i)\),求离每一个点最近的点得距离的平方.(\(n \leqslant 1e5\)) 这就是k-d tree入门题了. k-d tre ...
- HTML5 canvas getImageData() 方法
下面的代码通过 getImageData() 复制画布上指定矩形的像素数据,然后通过 putImageData() 将图像数据放回画布: var c=document.getElementById(& ...
- 2017-2018-2 20155314《网络对抗技术》Exp5 MSF基础应用
2017-2018-2 20155314<网络对抗技术>Exp5 MSF基础应用 目录 实验内容 实验环境 基础问题回答 预备知识 实验步骤--基于Armitage的MSF自动化漏洞攻击实 ...
- smartpass
1.smartpass 是用户注册后,产生的用户名密码 与每个摄像头的用户名密码不一致 2.每个设备初始化登录密码为admin admin,如果需要修改,则在进入该设备IP地址,设置——>用户管 ...
- AI 主成分分析(PCA)
主成分分析(principal components analysis,简称PCA),
- 【Codeforces 1137C】Museums Tour
Codeforces 1137 C 题意:给一个有向图,一周有\(d\)天,每一个点在每一周的某些时刻会开放,现在可以在这个图上从\(1\)号点开始随意地走,问最多能走到多少个开放的点.一个点如果重复 ...
- ASP.NET Core 中 HttpContext 详解与使用 | Microsoft.AspNetCore.Http 详解 (转载)
“传导体” HttpContext 要理解 HttpContext 是干嘛的,首先,看图 图一 内网访问程序 图二 反向代理访问程序 ASP.NET Core 程序中,Kestrel 是一个基于 li ...