Pagination ist eine häufig verwendete Funktion in Java -Webprojekten. Gestern wurden einfache Paging -Operationen und Suche Paging im Frühjahr MVC implementiert. Nehmen wir es hier auf. Das verwendete Framework ist (MyBatis+SpringMVC+Feder).
Zuerst brauchen wir eine paginierte Werkzeugkurs:
1. Pagination
importieren java.io.serializable; / *** Pagination*/ Public Class Page implementiert serialisierbar {private statische endgültige lange Serialversionuid = -3198048449643774660L; private int pagenow = 1; // aktuelle Seitenzahl private int pageSize = 4; // Anzahl der auf jeder Seite angezeigten Datensätze private int TotalCount; // Gesamtzahl der Aufzeichnungen privat int TotalPageCount; // Gesamtzahl der Seiten @Suppresswarnings ("unbenutzt") Private int startpos; // Startposition von 0 @Suppresswarnings ("unbenutzt") Private boolean hasFirst; // gibt es eine Homepage @Suppresswarnings ("unbenutzt") Private boolesche Haspre; // Gibt es eine frühere Seite. Eine letzte Seite/ ** * Übergeben Sie die Gesamtzahl der Datensätze und die aktuelle Seite über den Konstruktor * @param TotalCount * @param pagenow */ public (int totalCount, int pagenow) {this.totAlcount = TotalCount; this.pagenow = pagenow; } / *** Erhalten Sie die Gesamtzahl der Seiten, die Gesamtzahl der Seiten = Gesamtsumme / Gesamtzahl der Seiten* @return* / public int getTotalPageCount () {TotalPageCount = GetTotAncount () / getPageSize (); Return (TotalCount % pageSize == 0)? TotalPageCount: TotalPageCount + 1; } public void settotalpageCount (int TotalPageCount) {this.totalPageCount = TotalPageCount; } public int getPagenow () {return pagenow; } public void setpagenow (int pagenow) {this.pagenow = pagenow; } public int getPageSize () {return pageSize; } public void setPageSize (int pageSize) {this.pageSize = pageSize; } public int getTotalCount () {return TotalCount; } public void settotalcount (int totalCount) {this.totalCount = TotalCount; } / ** * die Anfangsposition des Auswahlsatzes erhalten * @return * / public int getStartPos () {return (pagenow - 1) * pageSize; } public void setStartPos (int startpos) {this.startpos = startpos; } / *** Ist es die erste Seite* @return* / public boolean ishasfirst () {return (pagenow == 1)? Falsch: wahr; } public void sethasfirst (boolean hasfirst) {thas.hasfirst = hasfirst; } / *** Gibt es eine Homepage* @return* / public boolean isHaspre () {// Wenn es eine Startseite gibt, gibt es die vorherige Seite, da es eine Startseite gibt, es ist nicht die erste Seite. ISHASFIRST () zurückgeben? wahr: falsch; } public void sethaspre (boolean Haspre) {this.haspre = HaSpre; } / *** Gibt es eine nächste Seite* @return* / public boolean iShasnext () {// Wenn es eine letzte Seite gibt, gibt es die nächste Seite, da es eine letzte Seite gibt, ist es nicht die letzte Seite. Ishaslast () zurückgeben? wahr: falsch; } public void sethasnext (boolean hasNext) {this.hasnext = hasNext; } / *** Gibt es eine letzte Seite* @return* / public boolean ishaslast () {// Wenn es nicht die letzte Seite ist, wird es eine letzte Seite zurückgeben (pagenow == GettotalCount ())? Falsch: wahr; } public void sethaslast (boolean haslast) {this.haslast = haslast; }}Schreiben Sie mit dieser Toolklasse zunächst die SQL -Anweisung in die Konfigurationsdatei xxxxmapper.xml von mybatis wie folgt:
<!-- Pagination SQL statement--> <select id="selectProductsByPage" resultMap="return value type"> select * from table name WHERE user_id = #{userId,jdbcType=INTEGER} limit #{startPos},#{pageSize} </select> <!-- Get the total number of records--> <select id="getProductsCount" resultType = "long"> wählenHier können wir sehen, dass die beiden Parameter 3 bzw. 1 in 3 bzw. 1 übergeben müssen. Schreiben Sie zu diesem Zeitpunkt eine Schnittstelle in die entsprechende DAO -Datei ixxxxdao, um die entsprechende Methode zu schreiben. Der Methodenname entspricht dem ID -Attributwert in makePer.xml:
/ ** * Übergeben Sie mehrere Parameter mit Annotationsmethode, Benutzerproduktpagination, Abfrage durch Anmelde in der Benutzer -ID * @param Seite * @param userID * @return startpos},#{pagessize} */ publiclist <produkte> selectProductsbypage (@param (value = "startpos") IntEger Integer startpos, @param (value = " pageSize,@param (value = "userId") Integer userId); / ** * Produktmengeninformationen und Abfrage erhalten, indem Sie sich in Benutzer -ID anmeldenNach Abschluss der Schnittstellendefinition müssen Sie die entsprechende Geschäftsschnittstelle und Implementierungsmethode schreiben, eine solche Methode in der Schnittstelle definieren und dann in der Implementierungsklasse überschreiben:
/ ** * Seite Anzeigeprodukt * @param request * @param modell * @param loginuserId */ void showProductsBypage (httpServletRequest -Anforderung, Modellmodell, int loginuserId);
Die nächste Methode zur Implementierung der Klasse besteht darin, die DAO -Ebene aufzurufen und die vom Controller übergebenen Parameter zur Durchführung von Geschäftslogikverarbeitung zu akzeptieren. Die Anforderung wird verwendet, um die vom Front-End übergebenen Parameter zu erhalten, und das Modell wird verwendet, um die Verarbeitungsergebnisse an die JSP-Seite zurückzugeben.
@Override public void showProductsBypage (httpServletRequest -Anforderung, Modellmodell, int loginUserID) {String pagenow = request.getParameter ("pagenow"); Seite Seite = NULL; Liste <productWithblobs> products = new ArrayList <ProductWithblobs> (); Int TotalCount = (int) productdao.getProductSCOUNT (LoginUerID); if (pagenow! = null) {page = new Page (TotalCount, Integer.ParseInt (pagenow)); alleProducts = this.Productdao.SelectProductsBypage (page.getStartpos (), page.getPageSize (), loginUerId); } else {page = new Page (TotalCount, 1); alleProducts = this.Productdao.SelectProductsBypage (page.getStartpos (), page.getPageSize (), loginUerId); } model.addattribute ("Produkte", Produkte); model.addattribute ("Seite", Seite); }Als nächstes kommt das Schreiben des Controllers. Wenn der Benutzer zur Seite dieses realen Produkts springen muss, muss er die entsprechende Methode im Controller durchgehen. In diesem Verarbeitungsprozess werden die Geschäftsschichtmethode aufgerufen, um das Ergebnis an die dynamische Anzeige von JSP zurückzugeben. Der Server generiert die Seite und übergibt sie für die Realität an den Client (Browser). Dies ist ein MVC -Prozess.
/ ** * Initialisieren Sie die "My Products" -Liste JSP -Seite mit Paging -Funktion * * @param request * @param model * @return */ @RequestMapping (value = "map path", method = requestMethod.get) public String showmyproduct (htttpletRevletreque) {// model model) {// request.getSession (). getAttribute ("loginuser"); // Bestimmen Sie, ob die Sitzung ungültig ist, wenn (loginuser == null || "" .Equals (loginuser)) {return "redirect:/"; } int loginuserId = loginuser.getUerId (); // Der ProductService hier ist ein Objekt der injizierten iProductService -Schnittstelle. zurück "JSP Pfad zum Springen"; }Ich werde den Akzeptanzteil der JSP -Seite nicht schreiben. Jeder ist das gleiche, das heißt, sie kombinieren JSTL und El, um es zu schreiben. (Ich habe auch ein Urteil beim Ausschalten vorgenommen. Wenn die akzeptierten Parameter leer sind, gibt es kein Produkt für die Ausgabe. Nur wenn die akzeptierten Parameter nicht leer sind, wird die Ausgabe nicht ausgeschaltet. Verwenden Sie << c: Wenn test = "$ {}"> kombiniert mit <c: ansonsten>) wird hier nur der relevante Code für den paginierischen Code angegeben.
<!-- Paging function start --> <div align="center"> <font size="2">Total${page.totalPageCount} page</font> <font size="2">Page${page.pageNow}</font> <a href="myProductPage?pageNow=1" rel="external nofollow" rel="external nofollow" > HOME </a> <c: Wählen Sie> <c: Wenn test = "$ {page.pagenow - 1> 0}"> <a href = "MyProductPage? href = "MYPRODUCTPAGE? Pagenow = 1" rel = "externe nofollow" rel = "externe nofollow"> vorherige Seite </a> </c: Wenn> </c: wählen> <c: wählen> <c: Wenn test = "$ {page.totalpageCount == 0}"> <a href = "MyProductPage? pagenow = $ {page.pagenow}" rel = "externe nofollow" rel = "externe nofollow"> nächste Seite </a> </c: wenn> <c: wenn test = "$ {page.pagenow + 1 <page.totalpageCount}"> <aa> <a href = "myProductPage? pagenow = $ {page.pagenow + 1}" rel = "external nofollow"> nächste Seite </a> </c: Wenn> <c: wenn test = "$ {page.pagenow + 1> = page.totalpageCount}"> <a <a {a href = "myProductPage? pagenow = $ {page.totalpageCount}" rel = "externe nofollow" rel = "externe nofollow"> nächste Seite </a> </c: wenn> </c: wählen> <c: wählen> <c: wenn test = "$ {page.totalpageCount == 0} <A. href = "MYPRODUCTPAGE? Nofollow "> Letzte Seite </a> </c: ansonsten> </c: Wählen Sie> </div> <!-Paginierungsfunktion Ende->2. Paging
In Bezug auf Abfrage -Paging ist der Vorgang ungefähr gleich, außer dass der dritte Parameter (das oben oben ist loginuserID) die Benutzereingabeparameter akzeptieren muss. Auf diese Weise müssen wir den Benutzereingangsparameter im Controller akzeptieren (die <eingabe> auf der Seite wird in GET -Methode übergeben) und dann die Sitzung hinzuzufügen, um den Abfragepaging zu vervollständigen (hier aufgrund des Hyperlinks auf "Next Page" werden verschiedene JSP -Seiten verwendet, um Paging zu bewältigen und das Pagen zu durchsuchen. Die Methode wurde auf einem JSP -Seite abgeschlossen. Tragen Sie es getrennt und laden Sie es mit einem <kason -Tag auf die erforderliche JSP -Seite, damit der Code vermieden werden kann):
Hier ist der Code für den Controller als Referenz:
/ ** * Abfragen Sie das Produkt nach Produktname * @param request * @param modell * @return */ @RequestMapPing (value = "map adresse", method = requestMethod.get) public String -searchForProducts (httpServletrequest -Anforderung, Modellmodell) {httpSession Session = Request.GetSession (); String param = request.getParameter ("Parameter"); String Condition = (String) session.getAttribute ("Bedingung"); // Bestimmen Sie zuerst, ob die Bedingung in der Sitzung leer ist, wenn (Zustand == null) {condition = new String (); Session.SetAttribute ("Zustand", Zustand); // Wenn die Bedingung in der Sitzung leer ist, bestimmen Sie, ob der übergebene Parameter leer ist. Wenn es leer ist, springen Sie zur Seite der Suchergebnisse, wenn (param == null || "" .Equals (param)) {return "privat/space/producsearchResult"; }} // Wenn die Sitzung nicht leer ist und der Param für eingehende Suchbedingung nicht leer ist, weisen Sie den Param an. Session.SetAttribute ("Zustand", Zustand); } // Verwenden Sie den Bedingungsattributwert in der Sitzung als Abfragebedingung. Rückgabe "Spring Page"; }Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.