- 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.1 核心概念
Spring Data repository抽象中最核心的接口就是Repository(显而易见的哈)。该接口使用了泛型,需要提供两个类型参数,第一个是接口处理的域对象类型,第二个是域对象的主键类型。这个接口常被看做是一个标记型接口,用来获取要操作的域对象类型和帮助开发者识别继承这个类的接口。在Repository的基础上,CrudRepository接口提供了针对实体类的复杂的CRUD(增删改查)操作。
Example 1.CrudRepository interface(CrudRepository接口)
public interface CrudRepository<T, ID extends Serializable>
extends Repository<T, ID> {
<S extends T> S save(S entity); //1
T findOne(ID primaryKey); //2
Iterable<T> findAll(); //3
Long count(); //4
void delete(T entity); //5
boolean exists(ID primaryKey); //6
// … more functionality omitted.
}
1.保存实体类
2.返回指定id的实体类
3.返回所有实体类
4.返回实体类的数量
5.删除指定实体类
6.判断指定id的实体类是否存在
Spring Data也提供了一些针对特定持久化技术的抽象,例如JpaRepository和MongoRepository。这些接口均继承了CrudRepository
PagingAndSortingRepository接口在CrudRepository的基础上增加了一些方法,使开发者可以方便的对实体类进行分页和排序。
Example 2.PagingAndSortingRepository
public interface PagingAndSortingRepository<T, ID extends Serializable>
extends CrudRepository<T, ID> {
Iterable<T> findAll(Sort sort);
Page<T> findAll(Pageable pageable);
}
在分页长度为20的基础上,想要获取第二页的User数据,代码如下
PagingAndSortingRepository<User, Long> repository = // … get access to a bean
Page<User> users = repository.findAll(new PageRequest(1, 20));
除了查询方法,还可以使用在查询基础上衍生出的count(获取数量)和delete(删除)方法。
Example 3.Derived Count Query(获取数量)
public interface UserRepository extends CrudRepository<User, Long> {
Long countByLastname(String lastname);
}
Example 3.Derived Delete Query(删除)
public interface UserRepository extends CrudRepository<User, Long> {
Long deleteByLastname(String lastname);
List<User> removeByLastname(String lastname);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论