Springboot-JAVA实现组织树形结构
1.组织树形数据库设计
SpringBoot+MybatisPlus架构
树形结构可以想象成三级分类 二级分类,理解成一个层级结构惯性就行
CREATE TABLE `tab_test_org` (`S_ID` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`S_ORG_ID` varchar(36) COLLATE utf8mb4_czech_ci DEFAULT NULL COMMENT '组织(区域)ID',`S_ORG_NAME` varchar(100) COLLATE utf8mb4_czech_ci NOT NULL COMMENT '组织名称',`S_PARENT_ID` varchar(100) COLLATE utf8mb4_czech_ci NOT NULL COMMENT '父组织id',`S_CODE` varchar(100) COLLATE utf8mb4_czech_ci DEFAULT NULL COMMENT '编号',`I_TYPE` int(11) DEFAULT NULL COMMENT '组织类别id',`I_ORDER` int(11) NOT NULL COMMENT '顺序号',`S_PATH` varchar(100) COLLATE utf8mb4_czech_ci DEFAULT NULL COMMENT '组织路径',`S_ICON` varchar(100) COLLATE utf8mb4_czech_ci DEFAULT NULL COMMENT '图标',`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建日期',`UPDATE_TIME` datetime DEFAULT NULL COMMENT '修改日期',`CREATE_BY` varchar(36) COLLATE utf8mb4_czech_ci DEFAULT NULL COMMENT '创建者',`UPDATE_BY` varchar(36) COLLATE utf8mb4_czech_ci DEFAULT NULL COMMENT '更新者',`OBJECT_VERSION` int(10) DEFAULT NULL COMMENT '版本号',`I_DELETE_FLAG` tinyint(2) DEFAULT '0' COMMENT '删除标识(0:正常 1:删除)',`I_LEVEL` int(11) DEFAULT NULL COMMENT '组织层级',`S_DESCRIPTION` varchar(200) COLLATE utf8mb4_czech_ci DEFAULT NULL COMMENT '描述',`S_EXTEND_INFO` longtext COLLATE utf8mb4_czech_ci COMMENT '扩展信息',`S_DOMAIN_TYPE` varchar(100) COLLATE utf8mb4_czech_ci DEFAULT NULL COMMENT '域类型,0或者空本级,下级域',PRIMARY KEY (`S_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci COMMENT='组织(区域表)';
2.java代码编写
controller层
/*** @description: 查询组织树数据* @param sParentId //父组织ID* @return R* @date 2021/7/26 14:18*/@RequestMapping("/queryOrgThreeList")public R queryOrgThreeList(String sParentId){List<OrgThreeInfoVo> orgThreeInfoVos = tabOrgService.queryOrgThreeList(sParentId);return R.ok().put("list", orgThreeInfoVos);}
ServiceImpl层
/*** @description: 加载组织树信息* @param sParentId* @return List<OrgThreeInfoVo>* @date 2021/7/26 16:03*/@Overridepublic List<OrgThreeInfoVo> queryOrgThreeList(String sParentId) {//查询组织树信息List<TabMvOrgEntity> tabMvOrgEntities = tabMvOrgDao.queryOrgThreeList(sParentId);//对数据源的转化List<OrgThreeInfoVo> orgThreeInfoVos=new ArrayList<>();for (TabMvOrgEntity tabMvOrgEntity : tabMvOrgEntities) {OrgThreeInfoVo orgThreeInfoVo=new OrgThreeInfoVo();orgThreeInfoVo.setSId(tabMvOrgEntity.getSId());//组织IdorgThreeInfoVo.setOrgId(tabMvOrgEntity.getSOrgId());//组织名称orgThreeInfoVo.setOrgName(tabMvOrgEntity.getSOrgName());//父组织IdorgThreeInfoVo.setSParentId(tabMvOrgEntity.getSParentId());orgThreeInfoVos.add(orgThreeInfoVo);}for (OrgThreeInfoVo orgThreeInfoVo : orgThreeInfoVos) {String orgId = orgThreeInfoVo.getOrgId();//递归操作List<OrgThreeInfoVo> child = queryOrgThreeList(orgId);//数据组装判断if(!child.isEmpty()){orgThreeInfoVo.setChildrenList(child);}}return orgThreeInfoVos;}
dao层
/*** @description: 加载组织树信息* @param sParentId* @return List<TabMvOrgEntity>* @date 2021/7/26 16:03*/
List<TabMvOrgEntity> queryOrgThreeList(String sParentId);
mapper层
<sql id="selectOrgALL">org.S_ID,org.S_ORG_ID,org.S_ORG_NAME,org.S_PARENT_ID,org.S_CODE,org.I_TYPE,org.I_ORDER,org.S_PATH,org.S_ICON,org.CREATE_TIME,org.UPDATE_TIME</sql><select id="queryOrgThreeList" resultMap="tabMvOrgMap">select <include refid="selectOrgALL"/> from tab_test_org org where org.I_DELETE_FLAG=0 AND org.S_PARENT_ID = #{sParentId}</select>
vo层
/*** 区域树信息* @author panlupeng* @date 2021/7/26*/
@Data
public class OrgThreeInfoVo implements Serializable {private Integer sId;private String orgId;private String orgName;private String sParentId;private List<OrgThreeInfoVo> childrenList;
}
po层
/*** 组织(区域表)* * @author panlupeng* @date 2021-07-26 13:56:40*/
@Data
@TableName("tab_test_org")
public class TabMvOrgEntity implements Serializable {private static final long serialVersionUID = 1L;/*** 主键ID*/@TableIdprivate Integer sId;/*** 组织(区域)ID*/private String sOrgId;/*** 组织名称*/private String sOrgName;/*** 父组织id*/private String sParentId;/*** 编号*/private String sCode;/*** 组织类别id*/private Integer iType;/*** 顺序号*/private Integer iOrder;/*** 组织路径*/private String sPath;/*** 图标*/private String sIcon;/*** 创建日期*/private Date createTime;/*** 修改日期*/private Date updateTime;/*** 创建者*/private String createBy;/*** 更新者*/private String updateBy;/*** 版本号*/private Integer objectVersion;/*** 删除标识(0:正常 1:删除)*/private Integer iDeleteFlag;/*** 组织层级*/private Integer iLevel;/*** 描述*/private String sDescription;/*** 扩展信息*/private String sExtendInfo;/*** 域类型,0或者空本级,下级域*/private String sDomainType;}
3.输出结果
{"msg": "success","code": 0,"list": [{"orgId": "001","orgName": "组织管理","childrenList": [{"orgId": "001001","orgName": "天津市","childrenList": [{"orgId": "001001001","orgName": "西青区","childrenList": null,"sid": 4,"sparentId": "001001"}],"sid": 2,"sparentId": "001"},{"orgId": "001002","orgName": "北京市","childrenList": null,"sid": 3,"sparentId": "001"}],"sid": 1,"sparentId": "0"}]
}
Springboot-JAVA实现组织树形结构相关推荐
- java 树结构递归设计,java实现递归树形结构
数据结构递归树,数据结构递归算法,数据结构递归,数据结构递归运算,考研数据结构考递归,数据结构递归回溯,js递归树形数据结构,数据结构分治,递归变非递归用什么数据结构...... 通过函数递归调用来实 ...
- php 获取所有的下级组织,树形结构 查找上下级
现有树形结构如下 若给出cat_id 9 如何查处 9 的所有上级 和 所有下级 array ( 1 =>array ( 'cat_id' => '1', 'cat_name' ...
- java中dom树形结构_DOM树的结构
转载于:http://hi.baidu.com/leexper/blog/item/1c47f1112c1d3676ca80c4a9.html 一.引言 XML 是eXtensible Markup ...
- java 集合封装树形结构
本例父子关系,子节点的parentId和父节点的id相同. 实现树形排列的方法 public static List<Type> buildTree(List<Type> tr ...
- java如何返回树形结构
一.需求说明 在做项目的时候前台要显示一个树形目录,比如下面这样: 二.添加数据库表 1.创建数据库表 2.添加测试数据 三.后端代码实现 PS:该测试类中的create_time和update_ti ...
- java web mysql树形结构_用JAVA写的树结构代码 - WEB源码|JSP源码/Java|源代码 - 源码中国...
压缩包 : 18743599Netbeanjtree.rar 列表 Netbeanjtree/jtree/build/built-jar.properties Netbeanjtree/jtree/b ...
- java组装树状结构数据集合_JAVA构建List集合为树形结构
package com.zving.tree; import java.util.ArrayList; import java.util.List; /** * 树形结构实体类 * @author c ...
- java arraylist 遍历树_Java递归遍历树形结构
废话不多说了,直接给大家贴代码,具体代码如下所示://菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { ...
- Java封装树形结构(任意父节点)
直接上代码,比如封装组织树形结构: @Service public class TestService{public List<DepTreeDto> treeDept() {//查询列表 ...
- mybatis 父子级树形结构查询
针对父子级数据目录查询, 以前都是逐级的去根据父级id查询子集目录, 查出后最后再在代码中拼成树形结构, 相当复杂,我们可以利用 mybatis 提供的 collection 标签自动组织树形结构, ...
最新文章
- python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例
- 剑指-从尾到头打印链表
- 2018qs计算机科学专业,2018QS世界大学计算机科学专业排名.docx
- 解决css中存在的几种兼容性问题
- Patsy库查看使用公式语法建模后的输入特征X 与 预测Y
- 虽说下班时间自己说了算
- 2012 Multi-University Training Contest 2
- 20155207第十章课下测试补交
- 10%的IOS设备已经更新到版本5.1.1
- 使用VMProtect给软件加壳
- VS2017超有用秘钥(亲测)
- 你所不知道的我国交通工程早期经历了怎样的发展?
- centos7安装部署kvm,照做就行
- vue vue-print-nb 打印图片
- [高通SDM450][Android9.0]CTA认证--拆分申请权限分组
- .Net C# Lambda表达式
- PC USB Warning
- 常用颜色对应RGB颜色图
- 石家庄程序员创业高级QQ群186813809
- Facebook 中国程序员之死:年仅 38 岁跳楼轻生,浙大 EE 毕业生,去年刚入职