首页 > 解决方案 > 不传参数删除db中包含父子关系的多个表的所有数据【Spring boot】

问题描述

我想知道有没有一种方法可以在不传递参数的情况下删除多个父/子表的所有数据?因为这些表的shared Id的行数很多,所以总是用void deleteAllByUserId(Long userId). 如果我每次都将 id 传递给方法,我需要做很多次。但很明显,我不能简单地void deleteAll()在多个上做,因为由于父/子关系,它会出现错误。所以我想知道有没有办法在一个方法中做到这一点?

例如,如果我有三个表,分别是表 A、表 B 和表 C。它们都共享 User_Id 的键。

  1. 我没有编辑我的存储库,因为 deleteAll() 已经写好了。
  2. 服务实施

    @Autowired
    private ARepository aRepository;
    
    @Autowired
    private BRepository bRepository;
    
    @Autowired
    private CRepository cRepository;
    
    
    public void deleteAllDataThreeTable() {
        aRepository.deleteAll();
        bRepository.deleteAll();
        cRepository.deleteAll();
    }
    

我不知道如何通过传递参数逐个删除 id,因为行数很多,我不认为传递每个 id 是一个好方法。任何想法都是一个很大的帮助。谢谢!!

标签: javadatabasespring-bootsql-delete

解决方案


假设您希望在删除用户时删除所有子项,您应该使用ON DELETE CASCADE数据库服务器的功能。这个页面提供了一个在 MySQL 中执行此操作的好示例。


推荐阅读