【问题标题】:How to fetch 500 rows at time until all items from table is fetched?如何一次获取 500 行,直到获取表中的所有项目?
【发布时间】:2020-07-28 15:12:43
【问题描述】:

我有一个超过 10 000 行的表。我正在将 Spring 与 JPA 一起使用,并且我想做一个“批处理”作业,我可以一次获取 500 行,直到没有更多可以从表中获取?我有一个扩展JpaRepository<SchoolAdmin, Long> 的存储库类。 我是 Spring 新手,如果有人能帮助我,我将不胜感激?

谢谢你:)

【问题讨论】:

    标签: java spring jpa java-8 spring-data-jpa


    【解决方案1】:

    你应该试试这样的:

    public interface SchoolAdminRepository extends PagingAndSortingRepository< SchoolAdmin, Long> {
        List<SchoolAdmin> findAll(Pageable pageable);
    }
    

    然后调用提供Pageable对象的方法:

    List<SchoolAdmin> page = repository.findAll(PageRequest.of(pageNumber, 500));
    

    【讨论】:

    • 但是我怎么知道接下来的 500 行从哪里开始呢?我怎么知道还剩下多少amny?我想一次取 500 个,直到全部取完
    • pageNumber 会告诉您下一步从哪里开始(取决于页面大小)。
    • 但是我需要扩展PaginationAndSortingRepository 吗?
    • 也许您使用的是旧版本。检查这个:stackoverflow.com/questions/44848653/…
    • 或者你可以用构造函数new PageRequest(pageNumber, 500)替换静态PageRequest::of
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2011-03-17
    相关资源
    最近更新 更多