Paginação e Ordenação com Spring Data JPA

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>

Tags: Spring Data JPA java hibernate paginação ordenacao

Publicado em 7-6 23:46