请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师 关于level不太理解的两个方法

public static String calculateLevel(String parentLevel, int parentId) {
    if (StringUtils.isBlank(parentLevel)) {
        return ROOT;
    } else {
        return StringUtils.join(parentLevel, SEPARATOR, parentId);
    }
}
这个方法中的参数parentLevel 是怎么来的 

然后是这个方法
   private String getLevel(Integer deptId){
    SysDept dept = sysDeptMapper.selectByPrimaryKey(deptId);
    if(dept == null){//parentId为0
        return null;
    }
    return dept.getLevel();
}
此方法最后返回的是这个部门的level
再是最后组装的时候
dept.setLevel(LevelUtil.calculateLevel(this.getLevel(param.getParentId()),param.getParentId()));
以上这些操作的都是SysDept本身的level啊  并没有看到获取自身level的上一级level啊


正在回答

1回答

你好,是这样理解的:

calculateLevel这个方法要传入的是当前部门上一级部门的level和上一级部门的id,然后计算(其实就是拼接)当前部门的level,赋值给当前部门的level。这里传入的参数需要注意都是他的上级部门的。

关于这个问题,我还单独写了一篇手记:

https://www.imooc.com/article/21103

祝你学习愉快~


0 回复 有任何疑惑可以回复我~
  • 提问者 华山小叮当 #1
    老师 你看我这么理解对不对  
     private String getLevel(Integer deptId){
        SysDept dept = sysDeptMapper.selectByPrimaryKey(deptId);
        if(dept == null){//parentId为0
            return null;
        }
        return dept.getLevel();
    这个方法其实传入的是一个parent_id  然后数据库拿到这个parent_id作为主键进行查询  最终返回了一个上一级的部门对象
    回复 有任何疑惑可以回复我~ 2018-03-15 15:27:36
  • Jimin #2
    嗯,传入的是parentid时,得到的就是上一级部门的level了。这些核心都是为了让一次查询出所有子部门数据,提升查询效率。
    回复 有任何疑惑可以回复我~ 2018-03-15 15:53:35
  • 提问者 华山小叮当 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-03-15 21:14:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信