有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Spring中只实现Crudepository的特定方法?

我使用spring数据jpa的CrudRepository来定义实体的接口,然后使用所有标准crud方法,而不必显式提供实现,例如:

public interface UserRepo extends CrudRepository<User, Long> {

}

尽管现在我只想在自定义实现中重写save()方法。我怎样才能做到这一点?因为,如果我实现接口UserRepo,我必须实现从接口CrudRepository继承的所有其他CRUD方法

我不能自己编写一个实现,它包含所有CRUD方法,但只覆盖一个,而不必自己实现所有其他方法吗


共 (1) 个答案

  1. # 1 楼答案

    你可以做一些非常类似的事情,我相信这会达到你想要的结果

    必要步骤:

    1. UserRepo现在将扩展2个接口:

       public interface UserRepo extends CrudRepository<User, Long>, UserCustomMethods{
      
       }
      
    2. 创建一个名为UserCustomMethods的新接口(您可以在此处和步骤1中选择名称并进行更改)

       public interface UserCustomMethods{
           public void mySave(User... users);
      
       }
      
    3. 创建一个名为UserRepoImpl的新类(这里的名称很重要,它应该是RepositoryNameImpl,因为如果调用其他名称,则需要相应地调整Java/XML配置)。此类应仅实现您创建的自定义接口

    提示:您可以在此类中插入entitymanager以用于查询

    public class UserRepoImpl implements UserRepo {
        
        //This is my tip, but not a must...
        @PersistenceContext
        private EntityManager em;
    
        public void mySave(User... users){
            //do what you need here
        }
    }
    
    1. 在任何需要的地方注入UserRepo,并享受CRUD和您的自定义方法:)