Java recursive logical deletion of data in tree structure

@Override
public int deleteContent(Long id) {
    List<Long> ids = new ArrayList<>();
    //先把要删除的一级分类id放入到集合中
    ids.add(id);
    //递归的将一级分类下的id也加入到集合中
    this.getIds(ids,id);
    return voucherContentMapper.deleteContents(ids);
}

//递归方法
private void getIds(List<Long> ids, Long parentId) {
    //查询二级分类的对象
    List<VoucherContent> contents = voucherContentMapper.findSonContentByParentId(parentId);
    //遍历二级分类的对象,把二级分类的id加入到要删除的集合中
    for (VoucherContent content : contents) {
        Long id = content.getId();
        ids.add(id);
        //把二级分类的每一个ID,查询它下面的子节点
        this.getIds(ids,id);
    }
}
<!--逻辑刪除評論-->
<update id="deleteContents" parameterType="java.lang.Long">
    update voucher_content
    set `status` = 0
    where id in
    <foreach collection="ids" item="id" index="index" open="(" separator="," close=")">
        #{id}
    </foreach>
</update>

Guess you like

Origin blog.csdn.net/weixin_45336946/article/details/124433361