递归删除树状数据
一、场景二、解决方案三、代码落地实现四、最终效果一、场景
我们在项目的实际开发中会遇到很多树状效果,例如树状图和树状table,这里以树状table举例,这时候我们如果要删除一条数据的话,我们不能只删除它自己,我们要连着将它下面的子节点全部删除
二、解决方案
先删除本身,在删除子的,递归删除通过递归拿到所有的id,加入到一个集合列表里面,一起删除一般来说删除树形结构我们有两种解决方案
我这里采取的第一种实现思路,第二种实现方案的话我给大家找了一篇优秀博客点击这里跳转
三、代码落地实现
天上飞的理念一定有落地的实现,这是我的实现
@Overridepublic int deleteZgswScslSxbgByIds(String[] ids){for (String id : ids) {deleteZgswScslSxbg(id);}return 1;}private void deleteZgswScslSxbg(String pid){zgswScslSxbgMapper.deleteZgswScslSxbgById(pid);scslZzsxbgZibgMapper.deleteScslZzsxbgZibgByZid(pid);scslDbsxbgZibg1Mapper.deleteScslDbsxbgZibg1ByZid(pid);scslDbsxbgZibg2Mapper.deleteScslDbsxbgZibg2ByZid(pid);ZgswScslSxbg zgswScslSxbg = new ZgswScslSxbg();zgswScslSxbg.setPid(pid);List<ZgswScslSxbg> zgswScslSxbgList = zgswScslSxbgMapper.selectZgswScslSxbgList(zgswScslSxbg);if(zgswScslSxbgList.size()>0){for (ZgswScslSxbg zgswScslSxbg1:zgswScslSxbgList) {if(zgswScslSxbg1.getId()!= null){deleteZgswScslSxbg(zgswScslSxbg1.getId());}}}}
四、最终效果
经过测试递归删除这一块没有任何问题,欢迎大家积极借鉴