Вы можете использовать Pagination
для создания фрагмента данных для клиента по запросу.
Вы можете сделать что-то вроде этого:
Репозиторий:
@Repository
public interface SomethingRepository extends PagingAndSortingRepository<Something, Long> {
Page<Something> findByMember_Id(Long memberId, Pageable pageable);
}
SomethingPageDto:
public class SomethingPageDto{
@JsonProperty("favourite_list")
private List<SomethingDto> somethings= new ArrayList<>();
@JsonProperty("total_pages")
private int totalPages;
@JsonProperty("current_page")
private int currentPage;
@JsonProperty("total_elements")
private Long totalElements;
@JsonProperty("current_page_elements")
private int currentPageElement;
}
Сервис:
@Autowired
private SomethingRepository repository;
public SomethingPageDTO getSomething(int pageNo, int pageSize, Long memberId) throws Exception {
Pageable paging = new PageRequest(pageNo, pageSize);
Page<Something> somethingPage = repository.findByMember_Id(memberId, paging);
//map EntityList to DTO
List<SomethingPageDTO > somethingDtos = new ArrayList<>();
return somethingDtos = somethingPage.getContent();
//somethingPage.getTotalElements();
//somethingPage.getTotalPages();
}
Контроллер:
@RestController
@RequestMapping("/some")
public class EmployeeController
{
@Autowired
somethingService service;
@GetMapping
public ResponseEntity<List<Something>> getAll(
@RequestParam Integer pageNo,
@RequestParam Integer pageSize,
@RequestParam Long memberId
{
List<somethingDto> list = service.getSomething(pageNo, pageSize, memberId);
return new ResponseEntity<List<SomethingDto>>(list, new HttpHeaders(), HttpStatus.OK);
}
}
дополнительные ресурсы:
https://dzone.com/articles/pagination-in-springboot-applications
https://howtodoinjava.com/spring-boot2/pagination-sorting-example/
https://www.baeldung.com/rest-api-pagination-in-spring