如果是多级关联删除还有跟好的解决方案吗?
public Result removePermissions(List<SysPermissions> permissionsList) {
if (permissionsList.size() == 0) {
return ResultData.fail(ResultMsg.PARAMS_ERROR);
}
// 遍历删除关联数据
for (SysPermissions sysPermissions : permissionsList) {
long menuExist = sysPermissionsMapper.selectCount(new QueryWrapper<SysPermissions>()
.eq(SysPermissions.PARENT_ID,sysPermissions.getId())
.last("limit 1"));
if (menuExist > 0) {
List<SysPermissions> menuList = sysPermissionsMapper.selectList(new QueryWrapper<SysPermissions>()
.eq(SysPermissions.PARENT_ID,sysPermissions.getId()));
for (SysPermissions permissions : menuList) {
long eventExist = sysPermissionsMapper.selectCount(new QueryWrapper<SysPermissions>()
.eq(SysPermissions.PARENT_ID,permissions.getId())
.last("limit 1"));
if (eventExist > 0) {
List<SysPermissions> eventList = sysPermissionsMapper.selectList(new QueryWrapper<SysPermissions>()
.eq(SysPermissions.PARENT_ID,permissions.getId()));
sysPermissionsMapper.deleteBatchIds(eventList);
}
}
sysPermissionsMapper.deleteBatchIds(menuList);
}
}
return ResultData.auto(sysPermissionsMapper.deleteBatchIds(permissionsList) > 0);
}
删除关联有2种方式:1.java代码方式:批量删除或者一条一条删除,首先要有被删除的主键之类的做参数,查询到关联表的主键,然后依次删除关联表数据。2.数据库方式:https://blog.csdn.net/zou666zou/article/details/122752746
你gitee找找别人的代码,你看谁这么写业务逻辑的 - -