定义查询方法的配置方法

由于 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 里面已经实现的基础公用方法。

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

  1. Spring Data JPA 从入门到精通~@Version处理乐观锁的问题

    @Version 处理乐观锁的问题 @Version 乐观锁介绍 我们在研究 Auditing 的时候,发现了一个有趣的注解 @Version,源码如下: package org.springfram ...

  2. spring data jpa从入门到精通_Spring Data JPA的简单入门

    前言 spring data JPA是spring团队打造的sping生态全家桶的一部分,本身内核使用的是hibernate核心源码,用来作为了解java持久层框架基本构成的样本是再好不过的选择.最近 ...

  3. Spring Data JPA 从入门到精通~Naming命名策略详解及其实践

    Naming 命名策略详解及其实践 用 JPA 离不开 @Entity 实体,我都知道实体里面有字段映射,而字段映射的方法有两种: 显式命名:在映射配置时,设置的数据库表名.列名等,就是进行显式命名, ...

  4. Spring Data JPA 从入门到精通~实际工作的应用场景

    在实际工作中,有哪些场景会用到自定义 Repository 呢,这里列出几种实际在工作中的应用案例. 1. 逻辑删除场景 可以用到上面说的两种实现方式,如果有框架级别的全局自定义 Respositor ...

  5. Spring Data JPA 从入门到精通~自定义实现Repository

    EntityManager 的获取方式 我们既然要自定义,首先讲一下 EntityManager 的两种获取方式. 1. 通过 @PersistenceContext 注解. 通过将 @Persist ...

  6. Spring Data JPA 从入门到精通~JpaSpecificationExecutor示例

    新建两个实体 @Entity(name = "UserInfoEntity") @Table(name = "user_info", schema = &quo ...

  7. Spring Data JPA 从入门到精通~QueryByExampleExecutor的使用

    QueryByExampleExecutor 的使用 按示例查询(QBE)是一种用户友好的查询技术,具有简单的接口,它允许动态查询创建,并且不需要编写包含字段名称的查询.从 UML 图中,可以看出继承 ...

  8. Spring Data JPA 从入门到精通~javax.persistence概况介绍

    虽然 Spring Data JPA 已经对数据的操作封装的很好了,约定大于配置的思想,帮我们默认了很多东西.JPA(Java 持久性 API)是存储业务实体关联的实体的来源,它显示了如何定义一个面向 ...

  9. Spring Data JPA 从入门到精通~SpEL表达式的支持

    在 Spring Data JPA 1.4 以后,支持在 @Query 中使用 SpEL 表达式(简介)来接收变量. SpEL 支持的变量 变量名 使用方式 描述 entityName select ...

最新文章

  1. Go 语言实现字符串匹配算法 -- BF(Brute Force) 和 RK(Rabin Karp)
  2. 10没有基于策略的qos_分布式QoS算法解析
  3. 工欲善其事,必先利其器 -- 这烙铁,升温有点狠
  4. 【map】【HDOJ】5233 Gunner II
  5. 【网络安全】一个堆题inndy_notepad的练习笔记
  6. AQO.NET实现数据操作封装
  7. 'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序
  8. python判断素数的函数_python判断素数的方法
  9. 数据库表结构及索引设计
  10. MATLAB绘制三维曲面图和等高线 绘图(2)
  11. POI-HSSF表格
  12. 判断当前是在ie还是谷歌
  13. SAP SD VF01 销售开票增强
  14. 网站黑白色调之filter属性
  15. P4745 B’s problem(b)
  16. golang语言的入门基础,及window和linux系统上环境的搭配及运行
  17. TA进阶实例34(Unreal制作水晶星光效果)
  18. spark on yarn falling back to uploading libraries under SPARK_HOME.
  19. php kafka使用
  20. 调用小程序OCR插件识别身份证信息

热门文章

  1. WMRouter:美团外卖Android开源路由框架
  2. 论文浅尝 - ICLR2020 | 知识图谱中数值规则的可微学习
  3. 论文浅尝 | 基于RNN与相似矩阵CNN的知识库问答
  4. 使用numpy实现神经网络模块
  5. JavaWeb笔记:JDBC总结
  6. OpenStack组件——Keystone身份认证
  7. 为Openstack制作CentOS7镜像
  8. 201521123059 《Java程序设计》第八周学习总结
  9. 表单和iframe的使用
  10. Openstack的RPC通信代码调用架构