Recientemente, la compañía necesita hacer una función de página de alarma, que requiere paginación. Después de verificar mucha información, descubrió que PageHelper es más adecuado.
Por lo tanto, escribí un tutorial sobre el uso de PageHelper a partir de cero, y también grabé con lo que había estado ocupado durante un día.
1. Primero, debe agregar la dependencia de PageHelper en el proyecto. Aquí lo agregué con Maven.
<Spendency> <MoupRid> com.github.pagehelper </proupid> <artifactid> pageHelper </arfactid> <versever> 4.1.6 </versión> </pendency>
2. Agregue la configuración de PageHelper en el archivo de configuración de MyBatis
<configuration> <plugins> <!-- com.github.pagehelper is the package name where the PageHelper class is located --> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- This parameter can be set without setting in versions 4.0.0---- This parameter is false by default --> <!-- When set to true, the first parameter offset of RowBounds will be used as the Número de página de Pagenum-> <!-El efecto es el mismo que el Pagenum en StartPage-> <Property name = "offsetSpagenum" value = "true"/> <!-Este parámetro predeterminado a falso-> <!-Cuando se establece en true, la consulta de conteo se realizará utilizando RowBounds Pagination-> <Nombre de propiedad = "RowBoundSwithSwithCount" Value = "True"/> <! o rowBounds.limit = 0, todos los resultados se consultarán-> <!-(equivalente al hecho de que la consulta de la página no se ejecuta, pero el resultado todavía está tipo de página)-> <name de propiedad = "pageSizezero" value = "true"/> <!-Versión 3.3.0 está disponible-Los parámetros de Paging están racionalizados, falso está deshabilitado por predeterminado-<!-Cuando la racionalización es eneguible, se endurecerá, 1 PageNums. first page, if pageNum>pages will query the last page --> <!-- When rationalization is disabled, if pageNum<1 or pageNum>pages will return empty data --> <property name="reasonable" value="true"/> <!-- Version 3.5.0 is available - In order to support the startPage(Object params) method --> <!-- Added a `params` parameter to configure the parameter mapping to get values from Map o ServLetRequest-> <!-Puede configurar pageno, pageSize, Count, PageSezero, Railentable, OrderBy, y no configure el valor predeterminado para asignar-> <!-Si no entiende este significado, no copie la configuración casualmente-> <!-<Nombre de propiedad = "params" valor = "Pagenum = PageSize = PageSize; Parámetros de la interfaz mapper-> <propiedad name = "soportMethodSarGuments" value = "true"/> <!-Siempre return PageInfo Tipo, verifique si el tipo de retorno es PageInfo y ninguno devuelve la página-> <Property name = "returnPageInfo" value = "check"/> </tugin> </glugins> </formuation>
3. Agregue una clase de PageBean para almacenar información pagada
clase pública PageBean <T> Implementa serializable {privado estático final Long SerialVersionUid = 1l; Privado total largo; // Número total de registros Lista privada <T> Lista; // Results set private int pagenum; // cuántas páginas private int pagesize; // Número de registros por página Páginas privadas int; // Número total de páginas Tamaño privado int; // num de página actual <= PageSize public PageBean (List <T> List) {if (List instanceOf Page) {Page <T> Page = (Page <T>) List; this.pagenum = page.getPageNum (); this.pagesize = page.getPageSize (); this.total = page.gettotal (); this.pages = page.getPages (); this.list = Page; this.size = page.size (); }} public Long getTotal () {return Total; } public void settotal (largo total) {this.total = total; } lista pública <t> getList () {Lista de retorno; } public void setList (list <t> list) {this.list = list; } public int getsize () {return size; } public void setSize (int tamaño) {this.size = size; } public int getPagenum () {return pagenum; } public void setPagenum (int pagenum) {this.pagenum = pagenum; } public int getPageSize () {return PageSize; } public void setPageSize (int págsagesize) {this.pagesize = pageSize; } public int getPages () {return Pages; } public void setPages (int páginas) {this.pages = páginas; }}El siguiente es el código de lógica comercial
4. Primero, comience desde el archivo mapper.xml, opere la base de datos SQL y descubra los datos que necesitamos
<select id = "selectallList" parametertype = "com.alarm.bean.alarmparammodel" resultMap = "alarmMap"> seleccione Message_id, Seqnum, Message_Type, Process_status, Distribution_status, procesador, ocurrir_time, cerca, system_id, group_id, warning_level, message_content de td_alarm
5. Método de interfaz de mapper
Lista pública <armparammodel> selectAllInt (modelo alarmparammodel);
6. Método de interfaz de servicio
DataGrid SELECTALLLIST (Modelo AlarmParammodel, int Pagenum, int PageSize);
7. Clase de implementación del servicio
Es importante tener en cuenta aquí que es la lógica principal de la paginación. Pagenum representa el número de página, PageSize representa el número de páginas que se muestran, el método StartPag es la página inicial, el método de Orderby es ordenar los datos de acuerdo con un cierto campo, aquí uso el orden descendente de OCCR_TIME (DESC)
Public DataGrid SELECTALLIST (Modelo AlarmParamModel, int Pagenum, int PageSize) {PageHelper.StartPage (Pagenum, PageSize); PageHelper.OrderBy ("OCCELAR_TIME DESC"); Lista <armparammodel> list = this.alarmmgrmapper.selectallList (modelo); PageInfo <armparammodel> pageInfo = new PageInfo <armparammodel> (lista); DataGrid dataGrid = new DataGrid (pageInfo.gettotal (), pageInfo.getList ()); return dataGrid; }8. Noté que utilicé una clase DataGrid aquí, que es una clase utilizada para pasar datos a la recepción, incluidos el total (total) y las filas (datos)
clase pública DataGrid {Private Long Total; ROWS LISTA PRIVADA = new ArrayList <> (); public dataGrid () {super (); } public dataGrid (Long Total, List Rows) {super (); this.total = total; this.rows = filas; } public Long GetTotal () {return Total; } public void settotal (largo total) {this.total = total; } Lista pública getrows () {return filas; } public void setrows (listas de listas) {this.rows = shows; }}9. Comience a escribir la capa del controlador y llame al método que escribí antes
Cabe señalar aquí que el desplazamiento y el límite son los números de página enviados desde la recepción y el número de páginas mostradas por página. A diferencia del desplazamiento y el límite de BootstraTable, el desplazamiento representa el desplazamiento, es decir, si se muestran 10 datos por página, el desplazamiento representado por la segunda página en Bootstrap es 10, y la primera página y la tercera página son 0 y 20 respectivamente. Y mi compensación aquí se refiere al pageno.
@RequestMapping (value = "/alarminfo/list", método = {requestMethod.get, requestmethod.post}) @ResponseBody public datagrid alarmInfo (modelo de alarmParammodel, @requestparam (value = "offset", defaultValue = "0", requerido = falso) PageNum, PageNum,,,, @RequestParam (value = "Limit", DefaultValue = "10", requerido = false) entero PageSize) {dataGrid dataGrid = this.alarmmgrservice.selectallList (modelo, pagenum, pageSize); return dataGrid; }10. Ahora la solicitud de recepción puede obtener los datos de backend y paginarlos. Publicaré la configuración de mi mesa de arranque de recepción.
$ ('#tb_departments'). Esta propiedad debe ser establecida (*) Pagination: True, // si para mostrar la paginación (*) solo en la parte del tiempo: verdadero, // establecer true para mostrar solo el número total de datos, no el botón Pagination. Paginación lateral: "servidor", // Método de paginación: Paginación del cliente del cliente, Pagination del servidor del servidor (*) PageNumber: 1, // Inicializar la primera página para cargar, la primera página predeterminada páginas: 10, // número de filas de registro por página (*) PageList: [10, 50, 100, 100], // no ingresar al servidor, por lo que personalmente siento que es de poca importancia para StrictSearch: true, showColumns: false, // ¿Se muestran todas las columnas showRefresh: false? El atributo de altura no está configurado, la tabla siente automáticamente la altura de la tabla de acuerdo con el número de registros, uniqueID: "id", // La identificación única de cada fila es generalmente la columna de clave principal showToGgle: false, // el botón de alternancia para ver la vista detallada y la vista de la lista CardView, // hace la vista detallada de la vista detallada: verdadero, detallado: detallado: detallado paginationDetailhalign: "Right", No usé los botones de paginación que vienen con Bootstrap. Escribí el grupo de botones yo mismo en JQ. En el siguiente artículo, publicaré el código de botón, para que pueda personalizarse en un grado superior ~ También puede usar los botones de paginación con sub-banda bootstraptable y simplemente cambiar la configuración.
Lo anterior es una explicación detallada de la paginación SpringMVC+MyBatis+Pagehelper presentada por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!