Java应用之--------递归获取部门信息树结构(Mybatis,SqlServer)

本文介绍了如何使用Java、Mybatis和SQL Server来递归获取部门信息并构建树结构。在Java环境下,通过设计部门表结构,利用parentId字段判断上级部门,并通过递归查询获取完整的部门树。详细展示了从数据库表结构到Mybatis配置、Mapper接口、实体类以及测试类的完整实现过程。
摘要由CSDN通过智能技术生成

最近得到了如下需求:公司新增部门的时候,可以选择上级部门,此时这个公司下所有的部门信息可以以树形结构返回给前端,类似于下图(网上找的一张)。

集成开发环境:Java JDK 1.8,Mybatis,SQL server,IDEA。

数据库表结构的设计:部门信息为一张表,id为自增主键;companyId为公司的ID(可以联想到还有一张公司表,这里不展示公司信息表);parentId为上级部门ID,parentID为0的时候,表示没有上级部门;name为部门名称;description为部门描述;deleted表示此数据是否可用(0可用,1已删除)。

数据库表中数据如下:

 由数据库我们可以得到如下的部门树结构(此处部门结构只为测试使用,不符合真正的公司部门结构):

      技术部
          项目管理部
          产品部
          开发部
              网站开发部
              App研发部
      财务部
          会计部
          出纳部
      人力资源部
          招聘部
          薪酬绩效部

这个树结构我们可以使用递归来实现,这里主要的递归实现如下(此段代码以下为详细实现,可以不看)。主要是用递归的思想来查询下级部门信息:

    @Test
    public void test01() throws IOException{
	    Department department = new Department();
	    department.setCompanyId(12L);
	    department.setParentId(0L);
	    List<DepartmentTree> departmentTrees = getDepartment(department);
    }

        //递归获取下级部门信息
	private List<DepartmentTree> getDepartment(Department department) {
		List<DepartmentTree> departmentTrees = mapper.getDepartmentTree(department);
		if (departmentTrees.size() > 0) {
			Department sonDepartment = new Department();
			for (int i = 0; i < departmentTrees.size(); i++) {
				sonDepartment.setParentId(departmentTrees.get(i).getId());
				sonDepartment.setCompanyId(department.getCompanyId());
				List<DepartmentTree> sonDepartmentTree = getDepartment(sonDepartment);
				departmentTrees.get(i).setDepartmentTrees(sonDepartmentTree);
			}
		}
		return departmentTrees;
	}

工程详细代码实现如下(可以不看):

mybatis配置文件mybatis-config.xml:

<?xml version="
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值