O número da página começa em 0, então pageNumber=0 e pageSize=3 retornará os primeiros 3 registros. Vamos criar uma variável Pageible para implementar a paginação.
import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service;
@Service public class ProdutoServiceImpl implements ProdutoService {
@Autowired
private ProdutoRepository produtoRepository;
// Método para obter produtos paginados
@Override
public List<produto> buscarTodosPaginados(Integer numeroPagina, Integer tamanhoPagina) {
// Cria objeto de paginação
Pageable pageable = PageRequest.of(numeroPagina, tamanhoPagina);
// Executa consulta paginada
Page<produto> produtos = produtoRepository.findAll(pageable);
// Obtém total de registros que correspondem aos critérios
Long totalRegistros = produtos.getTotalElements();
// Obtém registros da página atual
List<produto> listaProdutos = produtos.getContent();
return listaProdutos;
}
}
</div>2. Ordenação Antes da Paginação
-------------------------------
Podemos criar um objeto Sort e usá-lo para criar o objeto Pageable antes da consulat. Vamos explorar diferentes cenários de ordenação:
<div>```
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
import org.springframework.stereotype.Service;
@Service
public class ProdutoServiceImpl implements ProdutoService {
@Autowired
private ProdutoRepository produtoRepository;
// Ordenação por um único campo
@Override
public List<produto> buscarTodosPaginadosOrdenado(Integer numeroPagina, Integer tamanhoPagina) {
// Ordena por nome em ordem decrescente
Sort sort = Sort.by(Direction.DESC, "nome");
// Cria objeto de paginação com ordenação
Pageable pageable = PageRequest.of(numeroPagina, tamanhoPagina, sort);
// Executa consulta
Page<produto> produtos = produtoRepository.findAll(pageable);
// Retorna registros da página atual
return produtos.getContent();
}
// Ordenação por múltiplos campos com mesma direção
@Override
public List<produto> buscarTodosPaginadosMultiOrdenacao(Integer numeroPagina, Integer tamanhoPagina) {
// Ordena por múltiplos campos na mesma direção (decrescente)
Sort sort = Sort.by(Direction.DESC, "nome", "preco");
// Cria objeto de paginação
Pageable pageable = PageRequest.of(numeroPagina, tamanhoPagina, sort);
// Executa consulta
Page<produto> produtos = produtoRepository.findAll(pageable);
return produtos.getContent();
}
// Ordenação por múltiplos campos com direções diferentes
@Override
public List<produto> buscarTodosPaginadosOrdenacaoMista(Integer numeroPagina, Integer tamanhoPagina) {
// Define ordens de classificação com direções diferentes
List<order> ordens = new ArrayList<>();
ordens.add(new Order(Direction.DESC, "nome")); // Nome em ordem decrescente
ordens.add(new Order(Direction.ASC, "categoria")); // Categoria em ordem crescente
// Cria objeto de ordenação
Sort sort = Sort.by(ordens);
// Cria objeto de paginação
Pageable pageable = PageRequest.of(numeroPagina, tamanhoPagina, sort);
// Executa consulta
Page<produto> produtos = produtoRepository.findAll(pageable);
return produtos.getContent();
}
}
</produto></order></produto></produto></produto></produto></produto>