java - 如何从 Spring Data REST 中的页面获取列表

标签 java spring pagination spring-data spring-restcontroller

我将 JPARespository 用于我的所有 CRUD 操作。 最近想实现排序,所以我继续Pagable

问题是,我希望存储库方法返回 List 对象,我在我的服务层使用它们。

我怎样才能做到这一点,有没有办法将这些 Page 对象转换为 List

最佳答案

如果您在 jpa 存储库方法中使用 pageable,spring 将始终返回 Page 而不是 List。我建议您有一个服务方法,它调用存储库方法并将 Page 结果的内容提取到列表中。

所以如果你的存储库方法是这样的:

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface RecordRepository extends JpaRepository<Record, Integer>{                      
     Page<Record> findAll(Pageable pageable);
}

那么你可以有一个服务类,它有一个调用存储库方法的方法

@Service
public class RecordService{

   @Autowired
   RecordRepository recordRepository;

  public List<Record> findAll(PageRequest pageRequest){
    Page<Record> recordsPage = recordRepository.findAll(pageRequest);
    return recordsPage.getContent();
  }
}

所以在您的调用类中,您可以直接使用该服务,而不是直接调用存储库。因此:

public class MyRecordImpl{
   @Autowired
  RecordService recordService;

  public void doSomething(){
      int page = 0; int pageSize = 5;
      List<Record> recordList = recordService.findAll(new PageRequest(page, pageSize, new Sort(Sort.Direction.DESC, "recordId")));
     //do other implementations here
   }
}

关于java - 如何从 Spring Data REST 中的页面获取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809580/

相关文章:

java - 为什么它不存储所有键值而是存储最后更新的值?

java - 处理数据库时,try-with-resources 中应该包含什么

java - 在ServletContextListener中访问 session 变量

java - SpringBoot 2 事务传播嵌套不支持

java - Hibernate 全文搜索分页

pagination - Magento2 分页问题

java - 如何使用 Selenium Hub、Node 和 Remote Webdriver 捕获图像并将其附加到 Cucumber Reports (Jenkins)?

java - @ConditionalOnProperty : does it have an impact only on annotation specified below?

java - hibernate : How to get last n rows in spring boot JpaRepository?

android - 我们如何改变使用 Paging 3 android 加载的项目?