2012-08-09 32 views
5

? En mi base de datos tengo más de 100,000 registros y podría ser más en el futuro. Así que quiero implementar la paginación para esto. Es como publicaciones y de vez en cuando el usuario puede ir a las publicaciones más antiguas o más antiguas. Estoy usando Spring MVC y la base de datos es mysql.¿Cuál es la mejor manera de implementar la paginación usando Spring MVC con mysql

También estoy usando PagedListHolder para implementar la paginación. Quiero mostrar 25 publicaciones por página, pero si obtengo todas las 100.000 publicaciones inicialmente, llevará cierto tiempo cargar todos los registros. Entonces, ¿es esto mejor si primero cargo 100 registros y luego fusiono la lista con otros 100 registros, y así sucesivamente? Y si el usuario desea ver la publicación más antigua, busque las últimas 100 publicaciones y muestre las últimas 25 publicaciones en la última página.

Solo quería saber si esta solución es factible si esto funciona si alguien puede ayudarme a dar la dirección correcta.

+1

http://stackoverflow.com/questions/2245035/how-to-implement-pagination-in-spring-mvc-3 – AlphaMale

+2

Uso setFirstResult y setMaxResults (limit) como en http://stackoverflow.com/questions/2245035/how-to-implementation-pagination-in-spring-mvc-3. Usando inicio y límite puede calcular desde dónde comenzar a buscar datos y cuánto. Aún no entiendo por qué quiere fusionar valores en la lista en lugar de buscar un nuevo registro. En mi implementación, obtengo solo el número de registros que quiero mostrar en la página actual. Si buscara menos valores, podría obtener datos de algunas páginas de forma perezosa, pero ese caso podría manejarse con el almacenamiento en caché o aumentando la cantidad de conexiones en la base de datos (para usuarios grandes). – Pramod

Respuesta

6

Si está utilizando ORM, Spring Data JPA, puede proporcionar fácilmente la función de paginación lista para usar.

interfaz DAO para la entidad que necesita la paginación se extenderá PagingAndSortingRepository interfaz como: -

public interface BookRepository extends PagingAndSortingRepository<Book,Long>{ 
     // methods other than plain CRUD can be declared here 
} 

La interfaz clave para la operación de paginación es Pageable. Su implementación lista para usar PageRequest encapsula las entradas de paginación como el tamaño de resultado máximo, la página no, el tamaño, ordenar por, ordenar la dirección, desplazamiento.

PageRequest se pueden recuperar a partir de atributo de la petición en un método de controlador y pasa como argumento al método repositorio como: -

Page<Book> result = bookRepository.findAll(pageRequest); 

El retorno tipo Page, puede ser fácilmente repetir en capa de vista para representar detalles como tamaño del resultado, número total de resultados, orden de clasificación, orden de clasificación.

Encontré esto tutorial útil.

Cuestiones relacionadas