Recentemente, a empresa precisa fazer uma função de página de alarme, que requer paginação. Depois de verificar muitas informações, descobriu que o PageHelper é mais adequado.
Portanto, escrevi um tutorial sobre o uso do PageHelper a partir do zero e também gravei com o que eu estava ocupado há um dia.
1. Primeiro, você precisa adicionar a dependência do PageHelper no projeto. Aqui eu adicionei com Maven.
<Depencency> <voundid> com.github.pagehelper </frupidId> <TRATIFACTID> PageHelper </ArtifactId> <versão> 4.1.6 </versão </dependency>
2. Adicione a configuração do PageHelper no arquivo de configuração Mybatis
<figuration> <clugins> <!-com.github.pageHelper é o nome do pacote em que a classe PageHelper está localizada-> <plugin interceptor = "com.github.pageHelper.pageHelper"> <!-esse parâmetro pode ser definido sem definir na versões 4.0.0--o parâmetros é false-se, por exemplo, <! Como o número da página da pagenum-> <!-o efeito é o mesmo que o pagenum no startpage-> <propriedade name = "offsetPaGenum" value = "true"/> <!-este parâmetro padrão para false-> <!-quando definido como true, o counting será executado usando rowBounds " ou rowbounds.limit = 0, todos os resultados serão consultados-> <!-(equivalente ao fato de a consulta de página não ser executada, mas o resultado ainda é o tipo de página)-> <nome da propriedade = "PagesizeZero" Value = "true"/> <! Página, se Pagenum> Páginas consultar a última página-> <!-Quando a racionalização estiver desativada, se pagenum <1 ou pagenum> páginas retornarão dados vazios-> <propriedades name = "razoável" value = "true"/> <!-Versão 3.5.0 está disponível-em ordem para suportar o método de startpage (objeto)-<!-! ServletRequest-> <!-Você pode configurar pagenum, Pagesize, contar, Pagesizezero, razoável, ordenar e não configurar o valor padrão para mapeamento-> <!-Se você não entende esse significado, não copiou a configuração casualmente-> <! Parâmetros de interface do mapeador-> <propriedade name = "supportMethodSarguments" value = "true"/> <!-Retorne sempre o tipo PageInfo, verifique se o tipo de retorno é PageInfo e nenhum retorna página-> </Nome da propriedade = "ReturnPageInfo" Value = "Verificação"/> <//Plugin> </Plugins> </Configuration>
3. Adicione uma aula de página para armazenar informações paginadas
classe pública PageBean <T> implementa serializável {private estático final serialversionuid = 1L; Total longo privado; // Número total de registros Lista privada <T> Lista; // Resultado Conjunto privado Int pagenum; // quantas páginas privadas int PageSize; // número de registros por página Páginas privadas int; // Número total de páginas Tamanho privado int; // num da página atual <= Pagesize public PageBean (List <T> List) {if (list Instância de página) {página <t> página = (página <t>) list; this.pagenum = page.getpagenum (); this.Pagesize = Page.getPagesize (); this.Total = Page.gettotal (); this.Pages = Page.getPages (); this.list = página; this.size = Page.size (); }} public long getTotal () {return total; } public void Settotal (total longo) {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 size) {this.size = size; } public int getPagenum () {return pagenum; } public void setPagenum (int pagenum) {this.pagenum = pagenum; } public int getPagesize () {return pagageSize; } public void setPagesize (int PAGESIZE) {this.pagesize = Pagesize; } public int getPages () {retornar páginas; } public void setPages (int páginas) {this.Pages = páginas; }}A seguir, o código lógico de negócios
4. Primeiro, comece a partir do arquivo Mapper.xml, opere o banco de dados SQL e descubra os dados de que precisamos
<select id = "selectalllist" parameterType = "com.alaMr.bean.AlarmParammodel" ResultMap = "AlarmMap"> Selecione Message_Id, seqnum, Message_type, process_status, distribution_status, processador, occtor_time_time, system_id_id_id, warning_level,
5. Método da interface do mapeador
Lista pública <ararmParammodel> SelectAllList (modelo de alarmParammodel);
6. Método da interface de serviço
DataGrid SelectAllList (modelo de alarmParammodel, int pagenum, int PageSize);
7. Classe de implementação de serviço
É importante notar aqui que é a lógica principal da paginação. Pagenum representa o número da página, o PageSize representa o número de páginas exibidas, o método startpag é a página inicial, o método Orderby é classificar os dados de acordo com um determinado campo, aqui uso a ordem descendente de OCCR_TIME (DEC)
public Datagrid SelectAllList (modelo de alarmParammodel, int pagenum, int PageSize) {PageHelper.startPage (pagenum, PageSize); PageHelper.Orderby ("occ OckTe_time descembro"); Lista <ararmParammodel> list = this.AlarmMGRMAPPER.SELECTALLLIST (Model); PageInfo <ararmParammodel> PageInfo = new PageInfo <ararmParammodel> (list); Datagrid datagrid = new Datagrid (PageInfo.gettotal (), PageInfo.getList ()); return datagrid; }8. Percebi que usei uma classe Datagrid aqui, que é uma classe usada para passar dados para a recepção, incluindo total (total) e linhas (dados)
classe pública DataGrid {private Long Total; Lista privada linhas = new ArrayList <> (); public datagrid () {super (); } public datagrid (total longo, listas linhas) {super (); this.Total = Total; this.rows = linhas; } public long getTotal () {return total; } public void Settotal (total longo) {this.total = total; } list public getRows () {retorna linhas; } public void setRows (listas linhas) {this.rows = linhas; }}9. Comece a escrever a camada do controlador e chame o método que escrevi antes
Deve -se notar aqui que o deslocamento e o limite são os números de página enviados da recepção e o número de páginas exibidas por página. Diferente do deslocamento e do limite de inicialização, o deslocamento representa o deslocamento, ou seja, se 10 peças de dados forem exibidas por página, o deslocamento representado pela segunda página no bootstrap for 10 e a primeira página e a terceira página são 0 e 20, respectivamente. E meu deslocamento aqui se refere ao pagenum.
@RequestMapping (value = "/alarminfo/list", método = {requestMethod.get, requestMethod.post}) @ResponseBody public datagrid alarminfo (modelo alarmparammodel, @requestParam (value = "offset", defaultValue = "0", requerido = false) integro, pagenum, @RequestParam (value = "limite", defaultValue = "10", requerir = false) Pagesize inteiro) {datagrid datagrid = this.AlarmmGrservice.SelectallList (Model, pagenum, PageSize); return datagrid; }10. Agora, a solicitação da recepção pode obter os dados de back -end e paginá -los. Vou postar a configuração da minha tabela de inicialização da recepção.
$('#tb_departments').bootstrapTable({ url: 'http://10.1.234.134:8088/api/AlarmInfo/list', //Request URL (*) method: 'get', //Request method (*) striped: false, //Whether to display line interval color cache: false, //Whether to use cache, default is true, so in Geral, esta propriedade precisa ser definida (*) Paginação: True, // Se você deve exibir apenas o PAGING (*). "Servidor", // Método da paginação: Paginação do cliente, Paginação do servidor (*) Pagenumber: 1, // Inicialize a primeira página para carregar, padrão de primeira página PageSize: 10, // Número de linhas de gravação por página (*) PECTELT: [10, 25, 50, 100], // Número de linhas por página para selecionar (*) PECT: // feel that it is of little significance to strictSearch: true, showColumns: false, //Does all columns be displayed showRefresh: false, //Does the refresh button display minimumCountColumns: 2, //The minimum number of columns allowed clickToSelect: true, //Where to enable click to select row checkboxHeader: true, //Add height: 500, //Line height, if the height attribute is not set, the table automatically feels the height of the table according to the number of records, uniqueId: "id", //The unique identification of each row is generally the primary key column showToggle: false, //Does the toggle button for detailed view and list view cardView: false, //Does the detailed view detailView: true, detailFormatter:detailFormatter , paginationHAlign:"left", paginationDetailHAlign:"right", Eu não usei os botões de paginação que acompanham o bootstrap. Eu escrevi o grupo de botões em JQ. No próximo artigo, postarei o código do botão, para que ele possa ser personalizado em um grau mais alto ~ Você também pode usar os botões de paginação com sub-banda inicializável e apenas alterar a configuração.
O exposto acima é uma explicação detalhada da paginação Springmvc+mybatis+paginação paginper apresentada a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!