La pagination doit être une œuvre que nous faisons souvent lors du développement d'applications Web. Il est très important de pouvoir implémenter la pagination des bases de données et de visualiser les couches de manière relativement simple.
Dans la couche de base de données, utilisez Hibernate pour paginer la base de données et encapsuler les données interrogées de la base de données en javabeans; Dans la couche de vue, la pagination peut être facilement implémentée.
Créer PageBean
package com.fishing.common.bean; Importer java.util.list; @SuppressWarnings ("non coché") Classe publique PageBean {Liste privée de liste; // Liste des enregistrements à retourner privé int allRow; // Total Records Private int totalpage; // Total Pages private int currentPage; // page actuelle private int pagesize; // Nombre d'enregistrements par page booléen privé isFirstpage; // s'il s'agit de la première page privée booléenne IslastPage; // s'il s'agit de la dernière page Boolean HaspreviousPage privée; // Existe-t-il une page précédente Boolean Private HasnextPage; // Existe-t-il une page suivante publique publique GetList () {return list; } public void setList (list list) {this.list = list; } public int getAllRow () {return allRow; } public void setallRow (int allRow) {this.allrow = allRow; } public int getTotalPage () {return totalPage; } public void SettotalPage (int totalpage) {this.totalpage = totalPage; } public int getCurrentPage () {return currentPage; } public void setCurrentPage (int currentPage) {this.currentPage = currentPage; } public int getPageSize () {return pagesize; } public void setPageSize (int pagesize) {this.pagesize = pagesize; } / ** * / / ** * Initialisation Informations de pagination * / public void init () {this.isfiStPage = isFirstPage (); this.islastPage = IslastPage (); this.haspReviousPage = IshaspreviousPage (); this.hasnextPage = isHasNextPage (); } / ** * / / ** * Ce qui suit pour juger les informations de la page, Just Getter Method (IS Method) * * @return * / public boolean isFirstpage () {return (currentPage == 1); // Si la page actuelle est la première page} public booléan isLastPage () {return currentpage == totalPage; // Si la page actuelle est la dernière page} public booléen ishaspreviousPage () {return currentPage! = 1; // Tant que la page actuelle n'est pas la première page} publique booléen ishasnextpage () {return currentPage! = TotalPage; // Tant que la page actuelle n'est pas la dernière page} / ** * / / ** * Calculez le nombre total de pages, une méthode statique, et est directement appelé par l'extérieur via le nom de classe * * @param pagesize * Nombre de dossiers par page * @param allrow * Total Records * @return Total pages * / public static int compatpage (final int PageSize, final int allLrow) {int totalPage = allRowPage in pagesize == 0? allRow / pagesize: allRow / pagesize + 1; retour totalpage; } / ** * / / ** * Calculez l'enregistrement de démarrage de la page actuelle * * @param pageSize * Nombre d'enregistrements par page * @param currentPage * Page actuelle * @return Page actuelle Numéro d'enregistrement * / public static int compatoffset (Final int pageSize, final int CurrentPage) {final int int = pageSize * (currentpage - 1); return offset; } / ** * / / ** * Calculez la page actuelle. S'il est 0 ou il n'y a pas de "? Page =" Dans l'URL demandée, alors 1 est utilisé à la place * * @param page * Le paramètre passé (peut-être vide, c'est-à-dire 0, alors 1 sera retourné) * @return Page actuelle * / public static int countcurrentPage (int page) {final int curPage = (page == 0? 1: page); retour curpage; }} Ajouter des méthodes à l'interface abstraite de DAO basez-bas:
La liste publique QueryForPage (Final String HQL, final int offset, final int longueur); Implémentation de la méthode dans la classe d'implémentation de DAO Jianshedwdaoimpl publique list queryForpage (final String hql, final int offset, final int longueur) {list list = gethibernatetemplate (). ExecuteFind (new hibernatecallback () {public objet doinhibernate (session session) lance HiberNateException, sqlexectionception itory) Session.CreatEQUER (HQL); Liste de retour; } Ajouter des méthodes à l'interface de couche d'abstraction de service Jianshedwservice:
Public PageBean QueryForPage (int pagesize, int currentPage);
Mettre en œuvre des méthodes dans la classe de mise en œuvre des services:
Public PageBean QueryForPage (int pagesize, int page) {final String hql = "de jianshedwbean"; // Instruction de requête int allRow = this.basedao.getAllRowCount (HQL); // Total Records int totalPage = PageBean.CountTotalPage (PageSize, allRow); // Total pages final int offset = pageBean.Countoffset (pagesize, page); // La page actuelle commence à enregistrer Final int length = pagesize; // Nombre d'enregistrements par page final int currentPage = pageBean.CountCurrentPage (page); List <jianshedwbean> list = this.basedao.queryforpage (hql, offset, longueur); // Enregistrement de "une page" // Enregistrez les informations de pagination dans le bean pageBean PageBean = new PageBean (); PageBean.SetPageSize (PageSize); PageBean.SetCurrentPage (CurrentPage); PageBean.SetAllRow (allRow); PageBean.SetTotalPage (TotalPage); PageBean.SetList (liste); PageBean.init (); RETOUR PAGEBEAN; } Créer un modèle de pagination dans l'action de couche vue
package com.fishing.action.lcq; import com.fishing.common.bean.jianshedwbean; import com.fishing.common.bean.pageBean; import com.fishing.service.lcq.jianshedwservice; Importer com.opensymphony.xwork2.actionsupport; @SuppressWarnings ("Serial") classe publique getInfojsdwListAction étend ActionSupport {private int page; // quelle page PAGEBEAN PAGEBEAN; // haricot contenant des informations sur la distribution privé Jianshedwbean Jianshedwbean; // page PageBean privée; Le soldat Jianshedwservice Jianshedwservice; public int getPage () {return page; } public void setPage (int page) {this.page = page; } public PageBean getPageBean () {return PageBean; } public void setPageBean (pageBean PageBean) {this.pageBean = pageBean; } public jianshedwbean getjianshedwbean () {return jianshedwbean; } public void setjianshedwbean (jianshedwbean jianshedwbean) {this.jianshedwbean = jianshedwbean; } public jianshedwservice getjianshedwservice () {return jianshedwservice; } public void setjianshedwservice (jianshedwservice jianshedwservice) {this.jianshedwservice = jianshedwservice; } @Override public String execute () lève une exception {// La pageBean de la pagination, la pages de paramètre indique le nombre d'enregistrements affichés par page, la page est la page actuelle this.pageBean = jianshedwservice.queryForpage (10, page); retourner le succès; }} Écrivez une page dans jsp
<tr> <td> </td> <td> <s: if test = "% {pagebean.currentPage == 1}"> Home Page précédente </ s: if> <s: else> <a href = "jiangguan / getjsdwinfos.action? Page = 1"> Home </a> <a href = "jiangguan / getjsdwinfos.action? page = <s: propriété value ="% {pagebean.currentPage-1} "/>" /> page précédente </a> </ s: else> </td> <td> <s: if test = "% {pagebean.currentPage! = PageBean.Totalpage}"> <a href = "jiangguan / getjsdwinfos.action? page = <s: propriété value ="% {pagebean.currentPage + 1} "/>"> page suivante </a> <a href = "jiangguan / getjsdwinfos.action? Page = <s: propriété valeur =" pageBean.totalpage "/>"> Page </a> <s: else> Page de pagelast suivante </ s: else> </ td> <td> <div align = "Center"> Page <S: propriété Value = "PageBean.CurrentPage" /> / <S: Property Value = "PageBean.TotalPage" /> <S: Property Value = "PageBean.allrow" /> Enregistrent </v> <valign = "Centre"> </ TD> </td> </tr> Ce qui précède n'est qu'une implémentation du code et n'explique pas le fichier de configuration, et le lecteur le configure en fonction de la situation.
J'espère que cet article vous sera utile. Tout cela est pour vous d'introduire le contenu de pagination de l'implémentation SSH2 de la base de données et de l'interface. J'espère que tout le monde continuera à suivre notre site Web! Si vous souhaitez apprendre Java, vous pouvez continuer à suivre ce site Web.