实现类:
@Data
@TableName("per_department")
public class PerDepartmentEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 部门id
*/
@TableId
private Long id;
/**
* 部门名称
*/
private String deptName;
/**
* 父级部门id
*/
private Long parementId;
/**
* 部门描述
*/
private String deptDescription;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改人
*/
private String updateBy;
/**
* 修改时间
*/
private Date updateTime;
}
业务层,核心代码:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public List<Map<String, Object>> findTreeList() {
//查询出所有的一级菜单[pid=0为一级菜单]
List<PerDepartmentEntity> treeMenu = perDepartmentDao.selectByPid(0L);
List<Map<String, Object>> list = new ArrayList<>();
if (treeMenu.size() > 0) {
for (PerDepartmentEntity menu : treeMenu) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("id", menu.getId());
map.put("DeptName", menu.getDeptName());
map.put("children", getChildren(menu.getId()));
list.add(map);
}
}
return list;
}
/**
* 递归
*
* @param id
* @return
*/
public List<Object> getChildren(Long id) {
List<Object> list = new ArrayList<>();
List<PerDepartmentEntity> treeMenu = perDepartmentDao.selectByPid(id);
for (PerDepartmentEntity menu : treeMenu) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("id", menu.getId());
map.put("deptName", menu.getDeptName());
map.put("children", getChildren(menu.getId()));
list.add(map);
}
return list;
}
dao层:
@Mapper
public interface PerDepartmentDao extends BaseMapper<PerDepartmentEntity> {
/**
* 查询父级树形架构
*/
@Select("select * from per_department where parent_id = #{i}")
List<PerDepartmentEntity> selectByPid(@Param("i") Long i);
}