- 1 前言
- 2 项目元数据
- 3 使用条件
- 4 玩转Spring Data Repositories
- 4.1 核心概念
- 4.2 查询方法
- 4.3 repository接口定义
- 4.3.1 调整repository定义
- 4.4 定义查询方法
- 4.4.1 查询策略
- 4.4.2 创建查询
- 4.4.3 属性表达式
- 4.4.4 处理特殊参数
- 4.4.5 限定查询结果集大小
- 4.4.6 Stream处理查询结果
- 4.4.7 异步处理查询结果
- 4.5 创建repository实例
- 4.5.1 XML配置
- 4.5.2 JavaConfig
- 4.5.3 独立使用
- 4.6 自定义repository实现
- 4.6.1 为单一的repositories添加自定义方法
- 4.6.2 为所有的repositories添加自定义方法
- 4.7 扩展Spring Data
- 4.7.1 WEB支持
- 4.7.2 Repository填充
- 5 Elasticsearch Repositories
- 5.1.1 Spring命名空间
- 5.1.2 基于注解的配置
- 5.1.3 使用CDI
- 5.2.1 查询策略
- 5.2.2 创建查询
- 5.2.3 使用@Query注解
- 5.3 其他Elasticsearch操作的支持
- 5.3.1 构建Filter
- 5.3.2 利用Scan和Scroll处理大结果集
- 6.1 附录A 命名空间参考文档
- 6.2 附录B Populators命名空间参考文档
- 6.3 附录C Repository查询关键字
- 6.4 附录D Repository查询返回类型
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
4.3.1 调整repository定义
通常情况下,我们的repository接口会继承Repository,CrudRepository或PagingAndSortingRepository接口。但是,如果不想通过extend关键字继承Spring Data的接口,还可以采用在自定义的repository接口上加注解的方式,两种方式是等价的。例子如下:
public interface UserDao extends Repository<AccountInfo, Long>{...}
@RepositoryDefinition(domainClass = Person, idClass = Long.class)
public interface PersonRepository {...}
此外,继承CrudRepository接口,会为操作域对象提供了一组可立即使用的方法。如果开发者不想暴露CrudRepository接口的全部方法,只需简单的将需要的方法复制到自己的repository接口中。
这让我们可以在Spring Datade Repository的基础上定义自己的抽象接口
Example 5.Selectively exposing CRUD methods(选择性暴露方法)
@NoRepositoryBean
interface 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);
}
在上面的代码中,我们先定义了一个公共的基础接口MyBaseRepository,并提供findOne和save两个方法。接着声明一个UserRepository的接口并继承基础接口MyBaseRepository,所以UserRepository拥有保存User,根据id查找user和根据邮箱地址查找User三个方法。
注意,中间过渡的接口MyBaseRepository上加了NoRepositoryBean注解,这个注解是告诉Spring Data不要为这个接口创建repository代理实例。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论