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实现组织树形结构相关推荐

  1. java 树结构递归设计,java实现递归树形结构

    数据结构递归树,数据结构递归算法,数据结构递归,数据结构递归运算,考研数据结构考递归,数据结构递归回溯,js递归树形数据结构,数据结构分治,递归变非递归用什么数据结构...... 通过函数递归调用来实 ...

  2. php 获取所有的下级组织,树形结构 查找上下级

    现有树形结构如下    若给出cat_id 9  如何查处 9 的所有上级  和  所有下级 array ( 1 =>array ( 'cat_id' => '1', 'cat_name' ...

  3. java中dom树形结构_DOM树的结构

    转载于:http://hi.baidu.com/leexper/blog/item/1c47f1112c1d3676ca80c4a9.html 一.引言 XML 是eXtensible Markup ...

  4. java 集合封装树形结构

    本例父子关系,子节点的parentId和父节点的id相同. 实现树形排列的方法 public static List<Type> buildTree(List<Type> tr ...

  5. java如何返回树形结构

    一.需求说明 在做项目的时候前台要显示一个树形目录,比如下面这样: 二.添加数据库表 1.创建数据库表 2.添加测试数据 三.后端代码实现 PS:该测试类中的create_time和update_ti ...

  6. java web mysql树形结构_用JAVA写的树结构代码 - WEB源码|JSP源码/Java|源代码 - 源码中国...

    压缩包 : 18743599Netbeanjtree.rar 列表 Netbeanjtree/jtree/build/built-jar.properties Netbeanjtree/jtree/b ...

  7. java组装树状结构数据集合_JAVA构建List集合为树形结构

    package com.zving.tree; import java.util.ArrayList; import java.util.List; /** * 树形结构实体类 * @author c ...

  8. java arraylist 遍历树_Java递归遍历树形结构

    废话不多说了,直接给大家贴代码,具体代码如下所示://菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { ...

  9. Java封装树形结构(任意父节点)

    直接上代码,比如封装组织树形结构: @Service public class TestService{public List<DepTreeDto> treeDept() {//查询列表 ...

  10. mybatis 父子级树形结构查询

    针对父子级数据目录查询, 以前都是逐级的去根据父级id查询子集目录, 查出后最后再在代码中拼成树形结构, 相当复杂,我们可以利用 mybatis 提供的 collection 标签自动组织树形结构, ...

最新文章

  1. java里面有控制器吗_java怎么运行控制器里的类 java控制台输入类以及
  2. 不可不看的干货——机器人自主系统的技术构建:感知、决策和执行
  3. Linux下Json库的编译及代码测试
  4. 动态生成的DOM做点击事件无效
  5. JPG各种输入框样式
  6. 操作篇 ospf认识和应用
  7. Golang——垃圾回收GC(2)
  8. 思科设备debug命令的使用
  9. 服务器系统安装报价,服务器系统安装费用
  10. 应用安全 - 工具使用 - Nmap
  11. Log4cpp 配置文件配置Syslog
  12. 综述|线结构光中心提取算法研究发展
  13. 《生物化学与分子生物学》----蛋白质----听课笔记(四)
  14. 夜曲歌词 拼音_夜曲歌词
  15. 作业帮联手北师大、中国教育电视台以科技推进普惠教育发展
  16. 魂斗罗进化革命+塞班JAVA版_魂斗罗进化革命电脑版
  17. python基本操作_python的基本操作
  18. 从ChatGPT到ChatCAD:基于大型语言模型的医学图像交互式计算机辅助诊断
  19. 您好!欢迎关注异贝!异贝是中国8000万中小微企业忠实的朋友,与您一起成长。异贝商学院今天与您分享:健身行业异贝引客、锁客方案设计!
  20. keycloak 验证 token

热门文章

  1. hadoop的map和reduce
  2. java 错误声音播放器_JavaME 声音播放器的使用
  3. python判断邮箱格式是否正确_如何判断用户输入的邮箱格式是否正确?
  4. Python参考文献
  5. 无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
  6. python2048游戏代码_python 实现 2048 游戏 (二)
  7. 计算机启动黑屏时间很长,win7开机黑屏时间长怎么办?win7开机黑屏很久解决办法...
  8. Android build sequence
  9. 期货用期权对冲(期货用期权对冲吗)
  10. 爬虫(19)pipline补充+item的讲解+古诗文案例