Paginación en Java

Muchas veces lo que se necesita es implementar la paginación en Java. Tengo una forma genérica en implementar cualquier tipo de paginación en cualquier sitio. Sin cargar mucho la base de datos, ni utilizar mucha memoria una vez que se devuelven los datos. Supongamos que tenemos una tabla con muchos registros (100 000, por ejemplo) y queremos mostrarle a los usuarios 1 000 páginas con 100 registros por página.

Pongo un ejemplo genérico para un Servlet, pero en los demás casos la situación sería parecida.


public class PaginacionServlet extends HttpServlet {

private static final int REGISTROS_POR_PAGINA = 100;

private SqlMapClient SQL;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// para simplificar todo va dentro de bloque try..catch

// calculo la cantidad de contactos en todas las páginas

try {

// calculo el total de las entradas que tenemos

int total = (Integer)SQL.queryForObject(“”);

// calculo la cantidad de páginas total que vamos a mostrar al usuario

int mod = total % REGISTROS_POR_PAGINA;

int diff = total - mod;

int totalPaginas = diff / REGISTROS_POR_PAGINA;

if(mod != 0) // si la división no es exacta habrá una página más

totalPaginas++;

// obtengo la página actual en la que estamos

String sPage = request.getParameter(“p”);

int page = 0;

// si no está presente el parámetro asumo que estamos en la página cero (la primera)

if(sPage != null) {

page = Integer.parseInt(sPage);

page–;

}

// calculo el límite y el offset que pasaremos a la BBDD en la consulta

int offset = page * REGISTROS_POR_PAGINA;

int limit = REGISTROS_POR_PAGINA;

// la página actual ”de cara al usuario”

int paginaActual = page + 1; // el usuario empieza a contar de 1, no de 0

int paginaAnterior = page; // aquí se debería de controlar el valor de 0

int paginaSiguiente = page + 2; // la misma razón

// en la lista objects estará lo que queremos

List objects = SQL.queryForList(“queryConElLimitYElOffsetPuestos”);

}catch(Exception e){}

}

}

Un comentario a “Paginación en Java”

  1. victort dice:

    hoall me gustaria saber de un manualñ de procedires

Deja un comentario