Nota: He visto una variedad de paginación en línea, muchos de los cuales afirman ser comunes, pero a menudo no son satisfactorios: algunos agregan información de dirección de URL a la clase de paginación, y algunos también realizan acciones de paginación en la clase de paginación (esta acción es completamente una cuestión de operar la base de datos). Ahora, después de mi resumen y refinamiento:
Ya sea que pague manualmente usted mismo o use la ayuda de un marco. Esta clase de herramientas puede ayudarlo a lograr efectos de paginación estables (incluida la función de numeración de página de navegación), y el método de uso es relativamente simple: OK, menos tonterías, el código es el siguiente:
paquete test.dao; import java.util.list; / *** Clase de herramientas para paginación* @author No tome el nombre de la red*/ public class Pager <T> {Lista privada <T> LIST; // Registro de objeto Resultado Conjunto de resultados privados int total = 0; // Registros totales privados Int Limit = 20; // Número de registros mostrados por página Private int páginas = 1; // Páginas totales privadas int pagenumber = 1; // página actual booleana privada isFirstPage = false; // si es la primera página private boolean islastPage = false; // Si es la última página, boolean privado HaspreviousPage = false; // ¿Hay una página anterior boolean private HasnextPage = false; // ¿Hay una siguiente página private int navegationPages = 8; // Número de números de página de navegación int [] NavigationPageMbers; // Todos los números de página de navegación Pager Pager (int Total, Int PageNumber, Limit); } public Pager (int Total, int PageNumber, int Limit) {init (Total, PageNumber, Limit); } private void init (int total, int pagenumber, int limit) {init (total, pageNumber, límite); } private void init (int total, int pageNumber, int límite) {// Establezca los parámetros básicos esto.total = total; this.limit = Limit; this.pages = (this.total-1) /this.limit+1; // Originalmente correcto de acuerdo con el número actual que puede ser incorrecto si (pageNumber <1) {this.pageNumber = 1; } else if (pageNumber> this.pages) {this.pageNumber = this.pages; } else {this.pageNumber = pageNumber; } // Después de la configuración de los parámetros básicos, calcule la página de navegación CalcNavigatePagenumbers (); // así como la determinación de la página límite JudgePageBoUdary (); } /*** Calcule la página de navegación* /private void calcnavigatePagenumbers () {// Cuando el número total de páginas es menor o igual al número de páginas de navegación if (páginas <= navegatePages) {navigatePageNumbers = new int [páginas]; para (int i = 0; i <páginas; i ++) {navegatePagenumbers [i] = i+1; }} else {// cuando el número total de páginas es mayor que el número de páginas de navegación navegatePagenumbers = new int [navegatePages]; int startnum = pageNumber-navigatePages/2; int endnum = PageNumber+NavigatePages/2; if (startnum <1) {startnum = 1; // (la primera página navegatePages para (int i = 0; i <naviggarpages; i ++) {naviggatePageNumbers [i] = startnum ++;}} else if (endnum> páginas) {endnum = pages; // la página de las últimas navegaciones para (int i = navigagages-1; i> = 0; i-) } else {// Todas las páginas intermedias para (int i = 0; i <navegatePages; i ++) {navegatePageNumbers [i] = startnum ++; PageNumber! = 1; {int}*/ public int getTotal () {return Total; public int getPageNumber () {return PageNumber; Boolean HaspreviousPage () {return HaspreviousPage; .Append (", PageNumber ="). Append (PageNumber) .Append (", Limit ="). Append (Limit) .Append (", isFirstPage ="). Append (isFirstPage) .Append (", isLastPage ="). Append (islastPage) .Append (", HaSprevioviousPage ="). .Append (", HasNextPage ="). Append (HasnextPage) .Append (", navegatePageMbers ="); "+navegatePagenumbers [i]);} sb.append (", list.size = "+list.size ()); sb.append ("] "); return sb.ToString ();}} Sobre el uso: los pasos son los siguientes:
1). Independientemente de si se usa la consulta condicional, primero cuenta el número total correspondiente de entradas.
2). Construya una clase de buscapersonas (los parámetros límite se pueden hacer de acuerdo con su propio primer plano)
3). Obtenga el parámetro PageNumber que se ha corregido automáticamente de acuerdo con la clase de buscapersonas construida, multiplique -1 y limite para servir como la ubicación del primer registro que se consultará.
4). Establezca todos los registros para verificar desde la posición inicial hasta el límite. (Si está paginando manualmente, también es posible que el segundo parámetro sea el desplazamiento de posición del registro final, dependiendo de la base de datos)
5). Establezca la lista consultada por [condición] en el objeto Pager y regrese.
6). En la capa de presentación, puede usar este objeto de página a través de servlet o acción o obtener directamente el objeto Pager. La cuestión específica de empalmar la URL también debe dejarse a la capa de presentación para completar.
int TotalCount = Integer.ValueOf (QueryCount.uniqueresult (). ToString ()); Pager Pager = New Pager (TotalCount, PageNumber, Limit); QueryList.SetFirStresult ((Pager.getPageNumber ()-1)*límite); // Procesamiento de fallas tolerante QueryList.SetMaxResults (límite); Pager.setList (QueryList.List ()); buscador de devolución;
El código anterior es un ejemplo simple con Hibernate. Si está utilizando páginas manuales, siga los pasos para usar.
Por supuesto, la paginación se puede completar en la capa DAO o en la capa de servicio. El servlet o acción llama al código de la capa de servicio. Personalmente, creo: la paginación es en realidad una necesidad comercial, por lo que se puede colocar en el nivel comercial. Debido a que la capa DAO proporciona la lista de [consulta de condición] correspondiente y el recuento de estadísticas [de condición], la capa comercial puede hacer llamadas de método de acuerdo con sus propias necesidades (solo debe ser seguido por pasos establecidos. Por supuesto, muchas veces, el negocio tiene pasos de proceso establecidos).
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.