java - 在 Spring JPA 存储库的 findByTopN 中动态设置 N
问题描述
我有一个 Spring Boot 应用程序,它有一个这样的存储库。
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
List<Employee> findTop3ByOrderBySalaryDesc();
}
上面的函数findTop3ByOrderBySalaryDesc
,找到薪水最高的前 3 名员工。有没有办法在这个例子中动态指定员工人数?例如,是否可以为此函数分配一个整数参数来确定员工人数?
解决方案
您可以使用 Pageable 对象作为参数而不是“Top”关键字。例如
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
List<Employee> findAllByOrderBySalaryDesc(Pageable pageable);
}
然后您需要调用该方法,请求具有最多 N 个元素的第一页。例如查找前 100 个元素的第一页:
List<Employee> list = repo.findAllByOrderBySalaryDesc(PageRequest.of(0, 100));
您也可以使用“findAll”方法并在调用期间指定自定义顺序:例如
List<Employee> list = repo.findAll(PageRequest.of(0, 100, Sort.by(Sort.Direction.DESC, "salary")));
看看这个教程:
推荐阅读
- performance - 从 ASP.NET WEB API 2 调用外部可执行文件时有哪些最佳实践
- ios - 是否可以预填充 AWS AppSync iOS 客户端?
- python - wx 模块缺少属性 ArtProvider
- apache-nifi - 使用 NiFi 将 CSV 转换为嵌套 JSON
- java - Vertx 池数据源 dropwizard-metrics 使用中的计数为负数
- python - 将多个变量分配给相同值的最优雅方法?
- wordpress - 使用 Wordpress 简码函数呈现 Gutenberg 块,将属性作为参数发送
- c++ - 在函数模板中使用 std::variant
- angularjs - 在 Ionic 上创建对象
- javascript - 子组件中的事件返回“未捕获的类型错误:无法读取未定义的属性“值”