一、场景
我们在项目的实际开发中会遇到很多树状效果,例如树状图和树状table,这里以树状table举例,这时候我们如果要删除一条数据的话,我们不能只删除它自己,我们要连着将它下面的子节点全部删除
二、解决方案
一般来说删除树形结构我们有两种解决方案
- 先删除本身,在删除子的,递归删除
- 通过递归拿到所有的id,加入到一个集合列表里面,一起删除
我这里采取的第一种实现思路,第二种实现方案的话我给大家找了一篇优秀博客点击这里跳转
三、代码落地实现
天上飞的理念一定有落地的实现,这是我的实现
@Override
public 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());
}
}
}
}
四、最终效果
经过测试递归删除这一块没有任何问题,欢迎大家积极借鉴