码迷,mamicode.com
首页 > 其他好文 > 详细

树节点递归删除--service层

时间:2017-09-25 22:56:22      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:获取   where   add   long   ntb   内存溢出   param   delete   溢出   

@Service
public class ContentCategoryServiceImpl extends BaseServiceImpl<ContentCategory> implements ContentCategoryService {


    @Override
    public void deleteContentCategory(Long parentId, Long id) {
        // 声明存放需要删除的节点的容器
        List<Object> ids = new ArrayList<>();

        // 把自己的id放到ids中
        ids.add(id);

        // 使用递归获取所有需要删除的节点的id
        this.getIds(id, ids);

        // 使用父类的方法,批量删除
        super.deleteByIds(ids);

        // 查询兄弟节点,声明查询条件
        ContentCategory param = new ContentCategory();
        param.setParentId(parentId);

        // 执行查询
        int count = super.queryCountByWhere(param);

        // 判断是否没有兄弟节点
        if (count == 0) {
            // 如果没有兄弟节点
            ContentCategory parent = new ContentCategory();

            parent.setId(parentId);
            // 修改父节点的isParent为false
            parent.setIsParent(false);

            // 执行修改
            super.updateByIdSelective(parent);

        }
        // 如果还有兄弟节点,神马都不做
    }

    // 使用递归的方式查询所有的子节点的id
    private void getIds(Long id, List<Object> ids) {
        // 根据条件查询当前节点的所有的子节点
        ContentCategory param = new ContentCategory();
        param.setParentId(id);
        List<ContentCategory> list = super.queryListByWhere(param);

        // 使用递归的方式,必须设置递归的停止条件,否则会一直自己调用自己,直到内存溢出
        // 判断是否还有子节点
        if (list.size() > 0) {
            // 如果有子节点,遍历结果集
            for (ContentCategory son : list) {
                // 1.把子节点的id放到ids容器中
                ids.add(son.getId());
                // 2.执行递归,自己调用自己,查询子节点的子
                this.getIds(son.getId(), ids);
            }
        }
    }







}

 

树节点递归删除--service层

标签:获取   where   add   long   ntb   内存溢出   param   delete   溢出   

原文地址:http://www.cnblogs.com/javaxiaoxin/p/7594202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!