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 标签自动组织树形结构, ...
最新文章
- java里面有控制器吗_java怎么运行控制器里的类 java控制台输入类以及
- 不可不看的干货——机器人自主系统的技术构建:感知、决策和执行
- Linux下Json库的编译及代码测试
- 动态生成的DOM做点击事件无效
- JPG各种输入框样式
- 操作篇 ospf认识和应用
- Golang——垃圾回收GC(2)
- 思科设备debug命令的使用
- 服务器系统安装报价,服务器系统安装费用
- 应用安全 - 工具使用 - Nmap
- Log4cpp 配置文件配置Syslog
- 综述|线结构光中心提取算法研究发展
- 《生物化学与分子生物学》----蛋白质----听课笔记(四)
- 夜曲歌词 拼音_夜曲歌词
- 作业帮联手北师大、中国教育电视台以科技推进普惠教育发展
- 魂斗罗进化革命+塞班JAVA版_魂斗罗进化革命电脑版
- python基本操作_python的基本操作
- 从ChatGPT到ChatCAD:基于大型语言模型的医学图像交互式计算机辅助诊断
- 您好!欢迎关注异贝!异贝是中国8000万中小微企业忠实的朋友,与您一起成长。异贝商学院今天与您分享:健身行业异贝引客、锁客方案设计!
- keycloak 验证 token
热门文章
- hadoop的map和reduce
- java 错误声音播放器_JavaME 声音播放器的使用
- python判断邮箱格式是否正确_如何判断用户输入的邮箱格式是否正确?
- Python参考文献
- 无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
- python2048游戏代码_python 实现 2048 游戏 (二)
- 计算机启动黑屏时间很长,win7开机黑屏时间长怎么办?win7开机黑屏很久解决办法...
- Android build sequence
- 期货用期权对冲(期货用期权对冲吗)
- 爬虫(19)pipline补充+item的讲解+古诗文案例