首页 > Java > java教程 > 如何在 Spring Data JPA 中使用注解限制查询结果?

如何在 Spring Data JPA 中使用注解限制查询结果?

DDD
发布: 2024-11-04 03:08:30
原创
939 人浏览过

How to Limit Query Results with Annotations in Spring Data JPA?

Spring-Data-JPA的setMaxResults注解

Spring-Data-JPA,一个强大的JPA存储库抽象库,简化了Spring中的数据访问基于Java的应用程序。然而,使用注解设置查询返回的最大结果数一直是一个挑战。

Spring Data JPA 1.7.0 (Evans Release Train) 解决方案

中Spring Data JPA 1.7.0 及更高版本中,情况有所改善。您现在可以使用 Top 和 First 关键字来限制查询结果。例如:

findTop10ByLastnameOrderByFirstnameAsc(String lastname);
登录后复制

Spring Data 会自动将返回结果的数量限制为指定数量(如果省略,则默认为 1)。结果的排序变得至关重要,无论是通过 OrderBy 子句还是方法中的 Sort 参数。

在 Spring Data JPA 1.7.0 之前

在此增强之前,检索数据切片需要使用分页。 Spring Data 使用 Pageable 接口进行分页请求,并使用 Page 抽象进行结果处理。

实现存储库接口如下:

public interface UserRepository extends Repository<User, Long> {

  List<User> findByUsername(String username, Pageable pageable);
}
登录后复制

使用该接口获取结果:

Pageable topTen = new PageRequest(0, 10);
List<User> result = repository.findByUsername("Matthews", topTen);
登录后复制

如果需要上下文信息,请使用 Page 作为返回类型:

public interface UserRepository extends Repository<User, Long> {

  Page<User> findByUsername(String username, Pageable pageable);
}
登录后复制

客户端代码可以利用此信息:

Pageable topTen = new PageRequest(0, 10);
Page<User> result = repository.findByUsername("Matthews", topTen);
Assert.assertThat(result.isFirstPage(), is(true));
登录后复制

使用 Page 作为返回type 触发计数投影查询执行以确定元素的总数。此外,为了保证稳定的结果,请始终在 PageRequest 中包含排序信息。

以上是如何在 Spring Data JPA 中使用注解限制查询结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板