Récemment, l'entreprise doit faire une fonction de page d'alarme, qui nécessite une pagination. Après avoir vérifié beaucoup d'informations, il a constaté que PageHelper est plus approprié.
Par conséquent, j'ai écrit un tutoriel sur l'utilisation de Pagehelper à partir de zéro, et j'ai également enregistré ce avec quoi j'étais occupé depuis une journée.
1. Premièrement, vous devez ajouter la dépendance de PageHelper dans le projet. Ici, je l'ai ajouté avec Maven.
<dependency> <proupId> com.github.pagehelper </prôdId> <ArtefactId> Pagehelper </letefactive> <in version> 4.1.6 </ version> </Dependance>
2. Ajouter la configuration de PageHelper dans le fichier de configuration MyBatis
<FIFIGRAGE> <Glugins> <! - com.github.pagehelper est le nom du package où se trouve la classe Pagehelper -> <plugin interceptor = "com.github.pagehelper.pagehelper"> <! - Ce paramètre peut être défini sans définir dans les versions 4.0.0 ---- Ce paramètre est utilisé par défaut -> <! - Lorsque vous êtes prêt Numéro de page de pagenum -> <! - L'effet est le même que le pagenum dans startpage -> <propriété name = "offSetSpageNum" value = "true" /> <! - Ce paramètre par défaut est false -> <! - Lorsque vous définissez TRUE, le compte de la requête sera effectué à l'aide de la pagination ROWBOUNDS -> <propriété name = "RowboundswithCount" ou rowbounds.limit = 0, tous les résultats seront interrogés -> <! - (équivalent au fait que la requête de la page n'est pas exécutée, mais le résultat est toujours le type de page) -> <propriété name = "pagesizezero" value = "true" /> <! - version 3.3.0 est disponible - les paramètres de pagination sont rationalisés, FAUX est désactivé par défaut -> <! Page, si Pagenum> Les pages interrogeront la dernière page -> <! - Lorsque la rationalisation est désactivée, si le pagenum <1 ou le pagenum> les pages renvoient des données vides -> <propriété = "raisonnable" value = "true" /> <! ServletRequest -> <! - Vous pouvez configurer le pagenum, pagesize, compter, pagesizezero, raisonnable, commander par et ne pas configurer la valeur par défaut pour la mappage -> <! - Si vous ne comprenez pas ce sens, ne copiez pas la configuration désinvolte -> <! Paramètres d'interface -> <propriété name = "supportMethoDsArguments" value = "true" /> <! - toujours return PageInfo Type, vérifiez si le type de retour est pageinfo, et aucune page de retour -> <propriété name = "returnPageInfo" value = "check" /> </ glugin> </gingins> </ configuration>
3. Ajouter une classe PageBean pour stocker des informations sur pages
classe publique PageBean <T> implémente Serializable {private static final long SerialVersionUID = 1l; Total long privé; // Nombre total de disques Liste privée <T> Liste; // Set de résultat private int pagenum; // combien de pages private int pagesize; // Nombre d'enregistrements par page pages INT privés; // Nombre total de pages Taille INT privée; // Num de la page actuelle <= 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 (long total) {this.total = total; } public list <T> getList () {return list; } 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 pagesize; } public void setPageSize (int pagesize) {this.pagesize = pagesize; } public int getPages () {return pages; } public void setPages (int pages) {this.pages = pages; }}Ce qui suit est le code de logique métier
4. Tout d'abord, commencez à partir du fichier Mappel.xml, utilisez la base de données SQL et découvrez les données dont nous avons besoin
<sélectionnez id = "selectalllist" ParameterType = "com.alarm.bean.alarmParammodel" resultMap = "AlarmMap"> SELECT Message_id, seqnum, message_type, process_status, distribution_status, processeur, occassent_time, close_time, system_id, groupes
5. Méthode d'interface du mappeur
LISTE PUBLIQUE <ALLALPARAMMODEL> SELECTALLLIST (AlarmParamModel);
6. Méthode d'interface de service
DataGrid SelectAllList (AlarmParamModel, int pagenum, int pagesize);
7. Classe de mise en œuvre du service
Il est important de noter ici que c'est la principale logique de la pagination. Pagenum représente le numéro de page, PageSize représente le nombre de pages affichées, la méthode startpag est la page initiale, l'ordre de l'ordre consiste à trier les données en fonction d'un certain champ, ici j'utilise l'ordre descendant de OCCR_TIME (DESC)
public dataGrid SelectAllList (AlarmParamModel Model, int pagenum, int pagesize) {pagehelper.startpage (pagenum, pagesize); PageHelper.OrderBy ("occasion_time desc"); List <AlarmParamModel> list = this.alarmmgrmapper.selectallList (modèle); PageInfo <AlarhParamModel> PageInfo = new PageInfo <AlarmParamModel> (list); DataGrid dataGrid = new DataGrid (pageInfo.getTotal (), pageInfo.getList ()); return dataGrid; }8. J'ai remarqué que j'utilisais une classe DataGrid ici, qui est une classe utilisée pour transmettre des données à la réception, y compris le total (total) et les lignes (données)
classe publique DataGrid {private long total; private list lignes = new ArrayList <> (); public dataGrid () {super (); } public dataGrid (long total, list lignes) {super (); this.total = total; this.Rows = lignes; } public long getTotal () {return total; } public void Settotal (long total) {this.total = total; } public list getrows () {return lignes; } public void setRows (list lignes) {this.Rows = lignes; }}9. Commencez à écrire la couche de contrôleur et appelez la méthode que j'ai écrite avant
Il convient de noter ici que le décalage et la limite sont les numéros de page envoyés à partir de la réception et le nombre de pages affichées par page. Différent du décalage et de la limite de bootstaptable, le décalage représente le décalage, c'est-à-dire que si 10 éléments de données sont affichés par page, le décalage représenté par la deuxième page en bootstrap est de 10, et la première page et la troisième page sont respectivement de 0 et 20. Et mon décalage fait référence ici au pagenum.
@RequestMapping (value = "/ alarminfo / list", méthode = {requestMethod.get, requestMethod.post}) @ResponseBody public dataGrid Alarminfo (AlarmParamModel modèle, @ requestParam (valeur = "offset", defaultValue = "0", obligatoire = false) INTERGER PAGENNUM, @RequestParam (value = "limite", defaultValue = "10", requise = false) entier pagesize) {dataGrid dataGrid = this.alarmmgrService.selectallList (modèle, pagenum, pagesize); return dataGrid; }10. Maintenant, la demande de réception peut obtenir les données backend et les paginer. Je publierai la configuration de ma table bootstrap de la réception.
$ ('# tb_departments'). bootstraptable ({url: 'http://10.1.234.134:8088/api/alarminfo/list', // Demande URL (*) Méthode: 'Get', // Demande de méthode (*) Stripped: FALSE, // If afficher la ligne de la ligne, CACHE CACHE: FALS La propriété doit être définie (*) Pagination: true, // Il faut afficher la pagination (*) uniquement en fopagination: true, // défini sur true pour afficher uniquement le nombre total de données, pas le bouton de pagination. "Server", // Méthode de pagination: Client Client Pagination, Server Server Pagination (*) PageNumber: 1, // Initialisez la première page à charger, PageLeList par défaut: 10, 50, 100], // Nombre de lignes par page pour sélectionner (*) Recherche: False, // La recherche du tableau est-elle affichée? Je pense donc personnellement qu'il est peu important de STRICTSEARCH: true, showcolumns: false, // toutes les colonnes sont-elles affichées showRefresh: false, // Le bouton de rafraîchissement affiche-t-il minimumCountColumns: 2, // le nombre minimum de colonnes autorisées ClickToselect: true, // Where to-Aptiller la hauteur de la ligne IFROCKIGNE n'est pas défini, le tableau ressent automatiquement la hauteur de la table en fonction du nombre d'enregistrements, unique: "id", // L'identification unique de chaque ligne est généralement la principale colonne de clé ShowToggle: false, // le bouton de bascule est-il pour une vue détaillée et de la liste de vue de la vue, la pagination False, la vue détaillée ", la vue de détail", " Je n'ai pas utilisé les boutons de pagination fournis avec bootstrap. J'ai écrit le groupe de boutons moi-même dans JQ. Dans le prochain article, je publierai le code du bouton, afin qu'il puisse être personnalisé à un degré plus élevé ~ Vous pouvez également utiliser les boutons de pagination avec un sous-bande bootstaptable et simplement modifier la configuration.
Ce qui précède est une explication détaillée de la pagination SpringMVC + Mybatis + Pagehelper qui vous est présentée par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!