ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

递归查询本节点的id及孩子节点的id

2022-05-31 09:35:04  阅读:233  来源: 互联网

标签:category return 递归 id categorySet 节点 categoryId


1、Controller:

    @RequestMapping("get_deep_category.do")
@ResponseBody
public ServerResponse getCategoryAndDeepChildrenCategory(HttpSession session,@RequestParam(value = "categoryId" ,defaultValue = "0") Integer categoryId){
User user = (User)session.getAttribute(Const.CURRENT_USER);
if(user == null){
return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录,请登录");
}
if(iUserService.checkAdminRole(user).isSuccess()){
//查询当前节点的id和递归子节点的id
// 0->10000->100000
return iCategoryService.selectCategoryAndChildrenById(categoryId);

}else{
return ServerResponse.createByErrorMessage("无权限操作,需要管理员权限");
}
}

2、Service:

           ServerResponse<List<Integer>> selectCategoryAndChildrenById(Integer categoryId);

3、ServiceImpl:

/**
* 递归查询本节点的id及孩子节点的id
* @param categoryId
* @return
*/
public ServerResponse<List<Integer>> selectCategoryAndChildrenById(Integer categoryId){
Set<Category> categorySet = Sets.newHashSet();
findChildCategory(categorySet,categoryId);


List<Integer> categoryIdList = Lists.newArrayList();
if(categoryId != null){
for(Category categoryItem : categorySet){
categoryIdList.add(categoryItem.getId());
}
}
return ServerResponse.createBySuccess(categoryIdList);
}


//递归算法,算出子节点
private Set<Category> findChildCategory(Set<Category> categorySet ,Integer categoryId){
Category category = categoryMapper.selectByPrimaryKey(categoryId);
if(category != null){
categorySet.add(category);
}
//查找子节点,递归算法一定要有一个退出的条件
List<Category> categoryList = categoryMapper.selectCategoryChildrenByParentId(categoryId);
for(Category categoryItem : categoryList){
findChildCategory(categorySet,categoryItem.getId());
}
return categorySet;
}

4、Mapper:

 ①:Category selectByPrimaryKey(Integer id);

 ②:List<Category> selectCategoryChildrenByParentId(Integer parentId);

 

 5、Mapper.xml:

①:

<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from mmall_category
where id = #{id,jdbcType=INTEGER}
</select>

 ②:

 <select id="selectCategoryChildrenByParentId" resultMap="BaseResultMap" parameterType="int">
   select
   <include refid="Base_Column_List"/>
   from mmall_category
   where parent_id = #{parentId}
</select>

 

标签:category,return,递归,id,categorySet,节点,categoryId
来源: https://www.cnblogs.com/sensenh/p/16329262.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有