一、本主的应用场景
部门里面有一个属性是当前部门的上级部门,而当前部门又会有下级部门,下级部门还有下级部门,这就形成了一个向下无限魂环,呈现出树状结构。
二、认识JSONObject
JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。
三、举例示范
Service层
public JSONArray getDepartmentLevelList() { List<Department> departments = departmentRepo.getFirstDepartList(); JSONArray departs = getLevelList(departments); return departs; } public JSONArray getLevelList(List<Department> departments) { JSONArray addChild = new JSONArray(); for (Department department : departments) { JSONObject jsonMenu =JSONObject.parseObject(JSON.toJSONString(department)); List<Department> nextDeparts = departmentRepo.findBySuborDepartment(department.getDepartmentName()); if (nextDeparts.size() > 0) { JSONArray nextChilds = getLevelList(nextDeparts); jsonMenu.put("departments", nextChilds); } addChild.add(jsonMenu); } return addChild; }
DepartmentRepo.java
@Repository public interface DepartmentRepo extends JpaRepository<Department, Long> {
/** * 获取最高级部门的list * * @return getFirstDepartList */ @Query(value = "select * from departments de where de.superDepartment is null", nativeQuery = true) List<Department> getFirstDepartList(); /** * 查询该部门的下级部门 * * @param departName * @return */ @Query(value = "select * from departments de where de.superDepartment = ?1", nativeQuery = true) List<Department> findBySuborDepartment(String departName);
}
数据库数据
结果数据显示:
好了,到这里就ok了,有问题可以留言给我,大家一起批评指正修改。