Spring Data JPA 从入门到精通~定义查询方法的配置方法

37 篇文章 10 订阅
本文介绍了如何在Spring Data JPA中定义查询方法,包括通过方法名指定查询逻辑和使用@Query注解自定义查询。同时,还提供了自定义Repository接口的示例,展示了如何选择性地暴露CRUD方法。
摘要由CSDN通过智能技术生成

定义查询方法的配置方法

由于 Spring JPA Repository 的实现原理是采用动态代理的机制,所以我们介绍两种定义查询方法,从方法名称中可以指定特定用于存储的查询和更新,或通过使用 @Query 手动定义的查询,取决于实际对数据的操作,只需要实体 Repository 继承 Spring Data Common 里面的 Repository 接口即可,就像前面我们讲的一样。如果你想有其他更多默认通用方法的实现,可以选择 JpaRepository、PagingAndSortingRepository、CrudRepository 等接口,也可以直接继承我们后面要介绍的 JpaSpecificationExecutor、QueryByExampleExecutor,QuerydslPredicateExecutor 和自定义 Response,都可以达到同样的效果。

如果不想扩展 Spring 数据接口,还可以使用它来注解存储库接口 @RepositoryDefinition,扩展 CrudRepository 公开了一套完整的方法来操纵实体。如果希望对所暴露的方法有选择性,只需将要暴露的方法复制 CrudRepository 到域库中即可,其实也是自定义 Repository 的一种。

示例:选择性地暴露CRUD方法

@NoRepositoryBeaninterface
MyBaseRepository<T, ID extends Serializable> extends Repository<T, ID> {
    T findOne(ID id); 
    T save(T entity);
}
interface UserRepository extends MyBaseRepository<User, Long> {
     User findByEmailAddress(EmailAddress emailAddress);
}

在此实例中,您为所有域存储库定义了一个公共基础接口,并将其暴露出来,findOne(…) 和 save(…) 这些方法将由 Spring Data 路由到你提供的 MyBaseRepository 的基本 Repository 实现中。在 JPA 的默认情况下,SimpleJpaRepository 作为上面两个接口的实现类,所以 UserRepository 现在将能够保存用户,并通过 ID 查找单个,以及触发查询以 Users 通过其电子邮件地址查找。

综上所述,得出以下两单:

  • MyRepository Extends Repository 接口就可以实现 Defining Query Methods 的功能。
  • 继承其他 Repository 的子接口,或者自定义子接口,可以选择性的暴漏 SimpleJpaRepository 里面已经实现的基础公用方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值