上代码:
controller:
/**
* 调转到创建角色选择分组界面
* @param request
* @return
*/
@ResponseBody
@RequestMapping("findAllGroupClass")
public Map findAllGroupClass(HttpServletRequest request){
Map<String,Object> map = new HashMap<>();
//递归查询所有的分组
List<GroupClass> groupClasses =groupClassService.getAllGroupClassByParentID(0);
map.put("groupClasses",groupClasses);
return map;
}
serverImpl:
/**
* 递归查询所有的分组,分组树形结构查询
* @param parentID
* @return
*/
@Override
public List<GroupClass> getAllGroupClassByParentID(long parentID) {
//拿到id作为条件进行查询,查出parentid为0的组合
List<GroupClass> groupClasses = groupClassMapper.selectGroupClassByParentID(parentID);
List<GroupClass> groupClassList = new ArrayList<>();
//遍历它,进行封装
for (GroupClass groupClass : groupClasses) {
//GroupClass aClass=new GroupClass();
//递归调用当前的pid作为条件
groupClass.setGroupClasses(selectGroupClassChildren(groupClass.getGroupClassID()));
groupClassList.add(groupClass);
}
return groupClassList;
}
/**
* 根据传过来的id进行查询 得到他下面的子集
* @author fsf
* @date 2020/7/28 15:01
*/
public List<GroupClass> selectGroupClassChildren(long parentID){
//根据他传过来的id作为查询
List<GroupClass> groupClasses = groupClassMapper.selectGroupClassByParentID(parentID);
//如果这个集合的数据大小为0那么就退出当前方法
if(groupClasses.size()==0){
return null;
}
List<GroupClass> list=new ArrayList<>();
//查询出来的结果大小大于0进行循环递归
for (GroupClass groupClass : groupClasses) {
//GroupClass aClass=new GroupClass();
//递归调用当前的pid作为条件
groupClass.setGroupClasses(selectGroupClassChildren(groupClass.getGroupClassID()));
list.add(groupClass);
}
return list;
}
mapper.xml:
<select id="selectGroupClassByParentID" parameterType="long" resultMap="GroupClassResultMap">
select gc.groupClassID,gc.groupName,gc.parentID from groupclass gc
where gc.parentID=#{0}
</select>
结果:
{
"groupClasses": [
{
"groupClassID": 1,
"groupName": "默认组",
"parentID": 0
},
"groupClasses": [
{
"groupClassID": 2,
"groupName": "创建测试1",
"parentID": 1
},
"groupClasses": null,
"userID": 0
},
{
"groupClassID": 3,
"groupName": "创建测试2",
"parentID": 1
},
"groupClasses": null,
"userID": 0
}
],
"userID": 0
}
]
}