【发布时间】:2019-06-19 14:06:43
【问题描述】:
我有一个存储库接口,它扩展了 CrudRepository 以自动为我提供所有基本的 crud 存储库功能。
public interface CustomerRepository extends CrudRepository<Customer, Integer> {
}
我还能添加自定义存储库函数并实现这个接口吗?
【问题讨论】:
标签: java spring spring-data-jpa
我有一个存储库接口,它扩展了 CrudRepository 以自动为我提供所有基本的 crud 存储库功能。
public interface CustomerRepository extends CrudRepository<Customer, Integer> {
}
我还能添加自定义存储库函数并实现这个接口吗?
【问题讨论】:
标签: java spring spring-data-jpa
肯定是的。
我们的想法是为您的自定义代码提供一个界面,如下所示:
interface CustomizedUserRepository {
void someCustomMethod(User user);
}
那么你需要一个以 Impl 结尾的实现:
class CustomizedUserRepositoryImpl implements CustomizedUserRepository {
public void someCustomMethod(User user) {
// Your custom implementation
}
}
最后是从自定义 repo 扩展而来的 Spring Data Repo:
interface UserRepository extends CrudRepository<User, Long>, CustomizedUserRepository {
// Declare query methods here
}
【讨论】:
如果您使用注释@Query从JpaRepository<User, Long>扩展,您也可以直接在界面中编写自己的查询
public interface UserRepository extends JpaRepository<User,Long> {
@Query("select u from User u where u.emailAddress = ?1")
User findByEmailAddress(String emailAddress);
}
春季文档:Query annotation
【讨论】: