后端编写树型结构查询

1.实体类

public class DeptInfoVO {
    /**
     * @Fields id 主键id
     */
    @ApiModelProperty("id")
    @TableId(value="id")
    @TableField(value="id")
    private Integer id;
    /**
     * @Fields parentId 父级id
     */
    private Integer parentId;
    /**
     * @Fields deptName 部门名字
     */
    @ApiModelProperty("deptName")
    @TableField(value="dept_name")
    private String deptName;

    /**
     * @Fields territory 地域
     */
    @ApiModelProperty("territory")
    @TableField(value="territory")
    private String territory;

    /**
     * @Fields deptLevel 部门级别
     */
    @ApiModelProperty("deptLevel")
    @TableField(value="dept_level")
    private String deptLevel;

    /**
     * @Fields ifDelete 逻辑删除 0 未删除  1 已删除
     */
    @ApiModelProperty("ifDelete")
    @TableField(value="if_delete")
    private Integer ifDelete;

    /**
     * @Fields remark 备注
     */
    @ApiModelProperty("remark")
    @TableField(value="remark")
    private String remark;
    /**
     * @Fields children 子结构
     */
    private List<DeptInfoVO> children;
    private static final long serialVersionUID = 1L;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getParentId() {
        return parentId;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public String getTerritory() {
        return territory;
    }

    public void setTerritory(String territory) {
        this.territory = territory;
    }

    public String getDeptLevel() {
        return deptLevel;
    }

    public void setDeptLevel(String deptLevel) {
        this.deptLevel = deptLevel;
    }

    public Integer getIfDelete() {
        return ifDelete;
    }

    public void setIfDelete(Integer ifDelete) {
        this.ifDelete = ifDelete;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public List<DeptInfoVO> getChildren() {
        return children;
    }

    public void setChildren(List<DeptInfoVO> children) {
        this.children = children;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        DeptInfoVO that = (DeptInfoVO) o;
        return Objects.equals(id, that.id) && Objects.equals(parentId, that.parentId) && Objects.equals(deptName, that.deptName) && Objects.equals(territory, that.territory) && Objects.equals(deptLevel, that.deptLevel) && Objects.equals(ifDelete, that.ifDelete) && Objects.equals(remark, that.remark) && Objects.equals(children, that.children);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, parentId, deptName, territory, deptLevel, ifDelete, remark, children);
    }
}

2.Controller层

/**
 * 查询部门树结构信息
 * @return
 */
@GetMapping("/deptTree")
@ApiOperation("查询部门树结构信息")
public BaseResult getDeptTree() {
    List<DeptInfoVO> deptTree = deManageService.getDeptTree();
    return BaseResult.success("树结构查询成功",deptTree);
}

3.Service层

/**
     * 查询部门树结构信息
     * @return
     */
    @Override
    public List<DeptInfoVO> getDeptTree() {
        //获取所有的父亲列表
        List<DeptInfoVO> cscpDeptInfos = getChildrenNode(0);
        return cscpDeptInfos;
    }
    /**
     * 递归获取子节点下的子节点
     * @param
     * @param
     * @return
     */
    private List<DeptInfoVO> getChildrenNode(Integer parentId) {
        List<DeptInfoVO> newTrees = new ArrayList<>();
        List<DeptInfoVO> list = deptInfoMapper.selectAll(parentId);

        for (DeptInfoVO item : list) {

            List<DeptInfoVO> news = getChildrenNode(item.getId());

            if (news == null || news.size() == 0) {
                newTrees.add(item);
                continue;
            }else {
                item.setChildren(news);
                newTrees.add(item);
            }

        }
        return newTrees;
    }

4.sql层

<select id="selectAll" resultType="com.ctsi.zzehr.param.vo.DeptInfoVO">
        select *
        FROM zzehr_settlement.cscp_dept_info
        where parent_id = #{parentId}
          and if_delete = 0
    </select>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值