專案中的遞迴例項
阿新 • • 發佈:2018-12-19
1.先看一下需要遞迴的資料結構。
2.service的處理。
package com.taotao.rest.service.impl; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.taotao.mapper.TbItemCatMapper; import com.taotao.pojo.TbItemCat; import com.taotao.pojo.TbItemCatExample; import com.taotao.pojo.TbItemCatExample.Criteria; import com.taotao.rest.pojo.CatNode; import com.taotao.rest.pojo.CatResult; import com.taotao.rest.service.ItemCatService; /** * 商品分類服務 * @author Administrator * */ @Service public class ItemCatServiceImpl implements ItemCatService { @Autowired private TbItemCatMapper itemCatMapper; @Override public CatResult getItemCatList() { CatResult catResult = new CatResult(); //查詢分類列表 catResult.setData(getCatList(0)); return catResult; } /** * 查詢分類列表 * @param parentId * @return */ private List<?> getCatList(long parentId) { // 建立查詢條件 TbItemCatExample example = new TbItemCatExample(); Criteria criteria = example.createCriteria(); criteria.andParentIdEqualTo(parentId); // 執行查詢 List<TbItemCat> list = itemCatMapper.selectByExample(example); // 返回值list List resultList = new ArrayList<>(); // 向list中新增節點 int count = 0; for (TbItemCat tbItemCat : list) { // 判斷是否為父節點 if (tbItemCat.getIsParent()) { CatNode catNode = new CatNode(); if (parentId == 0) { catNode.setName( "<a href='/products/" + tbItemCat.getId() + ".html'>" + tbItemCat.getName() + "</a>"); } else { catNode.setName(tbItemCat.getName()); } catNode.setUrl("/products/" + tbItemCat.getId() + ".html"); //使用遞迴 catNode.setItem(getCatList(tbItemCat.getId())); resultList.add(catNode); count ++; //第一層只取14條記錄,剩下的不顯示,如果要全部顯示,就需要改頁面了。 if (parentId == 0 &&count >= 14) { break; } } else { // 如果是葉子節點 resultList.add("/products/" + tbItemCat.getId() + ".html|" + tbItemCat.getName()); } } return resultList; } }