2012-08-09 15 views
5

Nel mio database ho più di 100.000 record e potrebbe essere più in futuro. Quindi voglio implementare l'impaginazione per questo. Come i post e una volta ogni tanto l'utente può andare ai post più vecchi o più vecchi. Sto usando Spring MVC e il database è mysql.qual è il modo migliore per implementare l'impaginazione usando la molla MVC con mysql

Inoltre sto utilizzando PagedListHolder per implementare l'impaginazione. Voglio visualizzare 25 post per pagina, ma se raccolgo tutti i 100.000 post inizialmente, ci vuole del tempo per caricare tutti i record. Quindi è meglio se carico prima 100 record e successivamente unisco l'elenco con altri 100 record e così via. E se l'utente vuole vedere il post più vecchio, recupera gli ultimi 100 post e visualizza gli ultimi 25 post nell'ultima pagina.

Quindi volevo solo sapere se questa soluzione è fattibile questo funzionerà se qualcuno mi può aiutare a dare la giusta direzione.

+1

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

+2

Uso setFirstResult e setMaxResults (limite) come in http://stackoverflow.com/questions/2245035/come da implementare paginazione-in-spring-mvc-3. Usando inizio e limite puoi calcolare da dove iniziare a recuperare i dati e quanto. Ancora non capisco perché vuoi unire i valori nell'elenco invece di recuperare il nuovo record. Nella mia implementazione raccolgo solo il numero di record che voglio mostrare nella pagina corrente. Se si stavano recuperando meno valori, è possibile recuperare i dati per alcune pagine pigramente, ma tale caso potrebbe essere gestito con la memorizzazione nella cache o aumentando il numero di connessioni nel database (per utenti di grandi dimensioni). – Pramod

risposta

6

Se si utilizza ORM, Spring Data JPA, è possibile fornire facilmente funzionalità di impaginazione predefinite.

interfaccia DAO per l'entità che ha bisogno di impaginazione si estenderà PagingAndSortingRepository interfaccia come: -

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

L'interfaccia chiave per il funzionamento impaginazione è Pageable. La sua implementazione pronta all'uso PageRequest incapsula gli input di impaginazione come dimensioni massime dei risultati, numero di pagina, dimensione, ordinamento per, direzione di ordinamento, offset.

PageRequest possono essere prelevati da attributo richiesta in un metodo di gestore e passato come argomento al metodo repository come: -

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

Il tipo restituito Page, può essere facilmente iterati in vista strato di rendering dettagli come dimensione del risultato, numero totale di risultati, ordine, direzione di ordinamento.

Ho trovato utile questo tutorial.

Problemi correlati