Ada dua metode implementasi paging umum:
1. Ubah SQL setiap kali Anda membalik halaman, berikan parameter yang relevan ke SQL, dan buka database untuk mengetahui data halaman secara real time dan menampilkannya.
2. Cari tahu semua data dalam tabel tertentu dalam database, dan kemudian dapatkan dan tampilkan data tertentu dengan memprosesnya dalam logika bisnis.
Untuk sistem manajemen sederhana dengan sejumlah kecil data, metode implementasi pertama relatif mudah untuk menggunakan lebih sedikit kode untuk mengimplementasikan fungsi paging. Artikel ini juga memperkenalkan metode ini kepada Anda:
Cuplikan kode:
1. Page.java
paket com.cm.contract.Common; impor org.apache.commons.lang.stringutils; impor org.apache.commons.lang.builder.tostringbuilder; / ** Kelas Pagination*@author fengwei*@Date 2016-5-23*/ halaman kelas publik mengimplementasikan java.io.serializable {private static final long serialversionuid = 1l; // halaman sebelumnya private boolean hasprepage; // halaman berikutnya boolean private hasnextpage; // berapa banyak item yang ditampilkan per halaman: default 20 private long everypage = 20L; // Jumlah Total Halaman Total Total Long; // Halaman saat ini: Default Halaman 1 Private Long CurrentPage = 1L; // Mulai Subskrip Private Long StartIndex; // Akhiri Subskrip Pribadi Long Endinindex; // Berapa banyak total pount pribadi; // mengurutkan nama kolom Private String sortname; // status penyortiran Private String sortstate; // mengurutkan informasi private string sortInfo; // mengurutkan apakah akan mengurutkan sortir boolean pribadi = false; Private String defaultInfo = ""; string publik getDefaultInfo () {return defaultInfo; } public void setDefaultInfo (String defaultInfo) {this.defaultInfo = defaultInfo; } public String getSortInfo () {return sortInfo; } public void setSortInfo (String sortInfo) {this.sortInfo = sortInfo; } public String getSortName () {return soTname; } public void setSortName (string sortName) {setPagesortState (sortName); } public String getSortState () {return sortstate; } public void setSortState (String sortState) {this.sortState = sortState; } halaman publik () {} / *** biasa digunakan, digunakan untuk menghitung paging** / halaman publik (total records) {this.totalCount = TotalRecords; settotalPage (getTotalPage (TotalRecords)); } / ** * Gunakan * Saat mengatur berapa banyak entri yang ditampilkan pada setiap halaman * * / halaman publik (setiap halaman, total total rec) {this.everypage = everypage; this.totalCount = TotalRecords; settotalPage (getTotalPage (TotalRecords)); } / *** @param status status kode* @param Nilai berapa banyak halaman yang harus dibawa atau mengatur berapa banyak item yang akan ditampilkan per halaman atau diurutkan sebagai nama kolom penyortiran* / pagestate void publik (indeks int, nilai string) {sort = false; switch (index) {case 0: seteverypage (long.parselong (value)); break; Kasus 1: pertama (); break; Kasus 2: Sebelumnya (); Break; Kasus 3: NEXT (); Break; Kasus 4: terakhir (); break; Kasus 5: sort = true; sortir (nilai); break; Kasus 6: // ke halaman setCurrentPage yang ditentukan (long.parselong (nilai)); merusak; }} / *** Halaman sebelumnya* / private void first () {currentPage = 1l; } private void sebelumnya () {currentPage--; } private void next () {currentPage ++; } private void last () {currentPage = totalPage; } private void sort (string sortName) {// atur status penyortiran setPagageSortState (sortName); } / *** Hitung jumlah total halaman** / private long getTotalPage (Total Records Long) {TotalPage Long = 0L; Everypage = Everypage == NULL? 10L: setiap halaman; if (TotalRecords % Everypage == 0) TotalPage = TotalRecords / Everypage; else {totalPage = TotalRecords / Everypage + 1; } return TotalPage; } public long getBeGinIndex () {this.beginIndex = (currentPage - 1) * Everypage; kembalikan ini.beginIndex; } public void setBeginIndex (long beginIndex) {this.beginIndex = beginIndex; } public long getCurrentPage () {this.currentpage = currentPage == 0? 1: lancarpage; kembalikan ini.currentpage; } public void setCurrentPage (long currentPage) {if (0 == currentPage) {currentPage = 1l; } this.currentPage = currentPage; } public long geteverypage () {this.everypage = everypage == 0? 10: setiap halaman; kembalikan ini. } public void setEverpage (long everpage) {this.everypage = everypage; } public boolean getHasnextPage () {this.hasnextPage = (currentPage! = totalPage) && (totalPage! = 0); kembalikan this.hasnextpage; } public void setHasnextPage (boolean hasnextpage) {this.hasnextPage = hasnextPage; } public boolean gethasprepage () {this.hasprepage = currentPage! = 1; kembalikan ini.hasprepage; } public void sethasprepage (boolean hasprepage) {this.hasprepage = hasprepage; } public long getTotalPage () {return this.totalPage; } public void setTotalPage (TotalPage panjang) {if (this.currentpage> totalPage) {this.currentPage = totalPage; } this.totalPage = TotalPage; } public long getTotalCount () {return this.totalCount; } public void SetTotalCount (TotalCount long) {setTotalPage (getTotalPage (totalCount))); this.totalCount = TotalCount; } @Override public string toString () {return tostringbuilder.reflectionToString (this); } /*** Atur status penyortiran** /private void setPagageSortState (String newPagesortName) {// menilai apakah bidang penyortiran sebelumnya kosong jika (stringutils.isempty (sortname)) {// penyortiran default adalah urutannya. this.sortinfo = pageutil.page_asc; } else {if (stringutils.equalsignorecase (newPageSortName, sortName)) {// menilai nilai status penyortiran sortstate if (stringutils.equalsignorecase (sortstate, pageutil.asc))) {this.sortState = pageutil.desc; this.sortinfo = pageutil.page_desc; } else {this.sortState = pageutil.asc; this.sortinfo = pageutil.page_asc; }} else {// default this.sortState = pageutil.asc; this.sortinfo = pageutil.page_asc; }} sortname = newPageSortName.TolowerCase (); } public boolean isSort () {return sort; } public void setSort (boolean sort) {this.sort = sort; } public long getENDInIndex () {this.endinIndex = (currentPage) * everypage; Return endinindex; } public void setendinIndex (Long EndinIndex) {this.endinIndex = endinIndex; }} 2.pagestate.java
paket com.cm.contract.Common; impor org.apache.commons.lang.stringutils; /** Kelas status pagination* @author fengwei* @date 2016-5-23* /pagestate pagestate { /*** Atur berapa banyak bagian yang akan ditampilkan per halaman** /setPage, /*** halaman beranda** /pertama, /*** halaman sebelumnya** /sebelumnya, untuk pergi * */ gopage; / *** @param Nilai Indeks Nama* @Return Indeks indeks indeks indeks indeks indeks indeks*/ public static int getordinal (nilai string) {int index = -1; if (stringutils.isempty (value)) {return index; } String newValue = stringutils.trim (value) .touppercase (); coba {index = valueOf (newValue) .ordinal (); } catch (IllegalArgumentException e) {} return index; }} 3.Pageutil.java
/ ** * Kelas alat pagination * @author fengwei * @Date 2016-5-23 */ kelas publik pageutil {public static final string ASC = "ASC"; String final statis publik desc = "desc"; string final public static page_desc = "↓"; Public Static Final String page_asc = "↑"; string final statis public page_null = ""; Public Static Final String session_page_key = "page"; /** * Initialize the paging class* @param initPageSql Unpatched query SQL * @param totalCount Total number of rows* @param index Paging status* @param value Only when setting how many pieces are displayed per page, the value will not be NULL, the others are NULL */ public static Page inintPage(Long totalCount,Integer index,String value,Page sessionPage){ Page page = null; if (index <0) {halaman = halaman baru (totalCount); } else { / ** Berapa banyak bagian yang ditampilkan per halaman* / long everpage = null == nilai? 10: long.parselong (nilai); / ** Dapatkan kelas paging dalam sesi untuk memfasilitasi menyimpan status halaman halaman*/ halaman = sessionpage; page.setEverpetage (everpage); page.setTotalCount (TotalCount); } halaman kembali; } / *** Ketika halaman mengklik: halaman beranda, halaman sebelumnya, halaman berikutnya, halaman terakhir, sortir, dan halaman adalah halaman pertama* @param index paging status* @param nilai sortir nama atau halaman adalah halaman pertama* / public static execpage (indeks int, nilai string, halaman sessionpage) {halaman halaman = sessionpage; / ** metode panggilan untuk perhitungan paging*/ page.pagestate (index, value); halaman kembali; }} 4.DefaultController.java Bagian ini dapat digunakan secara fleksibel
paket com.cm.contract.Common; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; impor javax.servlet.http.httpsession; impor org.springframework.web.bind.annotation.modelattribute; /** * Ekstrak Permintaan Publik dan Judul Respons: DefaultController Deskripsi: * * @author fengwei * @Date 2016-5-6 3:30:32 PM * /kelas publik DefaultController { /** * Kalimat pagination tiga lapis dari Kalimat Oracel melakukan perhitungan pagination sebelum menampilkan data! * * @param querysql * Pernyataan kueri SQL, bukan paginated * @param TotalCount * Jumlah total entri yang diperoleh berdasarkan kueri sql * @param columnNamedescorasc * nama kolom + metode penyortiran: total long atau long count) {nudount {httpservleteRequest, totr totalcount (httpserveTrequest, totr total } / ** status halaman, status ini dibangun di halaman dan tidak ada hubungannya dengan bisnis* / string pageAction = request.getParameter ("pageAction"); Nilai string = request.getParameter ("pageKey"); / ** Dapatkan indeks untuk menilai status status halaman*/ int index = pagestate.getordinal (pageAction); Halaman halaman = null; / ** * Indeks <1 Hanya ada dua status 1 Ketika panggilan pertama, tidak ada nilai di kelas halaman NULL Return -1 2 Ketika halaman menetapkan berapa banyak bagian yang ditampilkan per halaman: * indeks = 0, ketika ada banyak bagian yang ditampilkan per halaman, kelas halaman perlu dihitung ulang * */ halaman sessionpage = getPage (permintaan); if (index <1) {page = pageutil.inintpage (totalCount, index, value, sessionPage); } else {page = pageutil.execpage (index, value, sessionPage); } setSession (permintaan, halaman); halaman kembali; } private page getPage (permintaan httpservletRequest) {page page = (page) request.getSession (). getAttribute (pageutil.session_page_key); if (page == null) {page = halaman baru (); } halaman kembali; } private void setSession (permintaan httpservletRequest, halaman halaman) {request.getSession (). setAttribute (pageutil.session_page_key, halaman); }} Bagaimana menggunakan:
5. controller.java
/ *** Kondisi paging ditambahkan oleh model* Metode ExecutePage ditulis dalam kelas alat* @param model*/ @controller kelas publik cmlogController memperluas defaultController {@requestmapping ("index.do") public ModelAndView UserInto (model ModelMap, string userName) {namestr = userName; model.addattribute ("nama pengguna", namestr); // Jumlah halaman TotalCount = LogService.pagecounts (model); // halaman tampilan halaman = executePage (permintaan, totalCount); if (page.issort ()) {model.put ("ordername", page.getSortName ()); model.put ("descasc", page.getSortState ()); } else {model.put ("ordername", "logtime"); model.put ("descasc", "desc"); } model.put ("startIndex", page.getBeginIndex ()); model.put ("EndIndex", page.getendinIndex ()); ModelAndView mv = new ModelAndView (); // Pagination Query Loglist = LogService.pagelist (model); MV.AddObject ("Loglist", Loglist); mv.setViewName ("/jsp/log"); mengembalikan MV; }} 6. Beberapa pernyataan kueri di Maybatis
// kueri pagination <pilih id = "pagelist" parameterType = "peta" resultMap = "baseeresultMap"> pilih ttt.* Dari (pilih tt.*, Rownum rn dari (pilih* dari cm_log <where> <where test = "Username adalah null dan null dan null dan username username! = '> <! Injeksi SQL. Digunakan Selama Pengembangan: $, nyaman untuk men-debug SQL, gunakan selama rilis: #-> dan nama pengguna seperti '%$ {nama pengguna}%' </if> <if test = "type! = Null dan type! '' '> <! -> dan type = #{type, jdbctype = varchar} </if> </where> order by $ {ordername} $ {descasc}) tt) ttt <where> <if test = "startIndex! = Null dan startIndex! = ''> Rn> $ {startIndex} </if> </if test ="> rn> $ {startIndex} </if> </if if> <"if!" <! [Cdata [dan rn <= $ {endIndex}]]> </if> </where> </sfect> // Jumlah halaman <pilih id = "pagecount" parameTerType = "peta" resultType = "long"> count (*) dari cm_log <where> <if test = "username! '%$ {username}%' </if> </where> </ pilih> 7. Indeks halaman meja depan.jsp
// Cukup tambahkan div di tata letak halaman // nama pengguna sebagai kondisi // <jsp: param name = "url" value = "/log/index.do?"/> Tanda tanya tanpa kondisi harus ada <tody> <div align = "right" style = "height: 20"> <jsp: termasuk halaman = "/jsp/page.jsp"> <JSP: Param: value = "/log/index.do? username = $ {username}"/> </jsp: include> </div> </body> 8. Page.jsp direferensikan
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jstl/jstl/core"%> <corp: oPing "{{{{{{{nilai {{{{nilai { <c: atur var = "path" value = "$ {pageContext.Request.contextPath}" /> <c: set var = "url" value = "$ {param.url}" /> <c: set var = "urlparams" value = "$ {param.urlparams}" /<c: c: "$" $ "$" $ " value = "$ {path} /$ {url}" /> <tr> <td colspan = "5"> $ {urlparams} Total $ {page.totalCount} Catatan Total $ {page.totalpage} halaman per halaman {halaman. test = "$ {page.hasprepage eq false}"> << homepage <prepage </c: when> <c: akitan> <a href = "$ {pathurl} & pageAction = $ {urlparams {{{{pagrapl {{{a href = {{a href = {a href = {a href = {a href = a. /> <Halaman sebelumnya </a> </c: sebaliknya> </c: pilih> || <c: pilih> <c: when test = "$ {page.hasnextPage eq false}"> halaman berikutnya> halaman terakhir >> </c: when> <c: kerneling> <a href = "$ {pathUrl} & pageAction = next $ {urlparams}"> Next Page> </a> <a a. href = "$ {pathUrl} & pageAction = terakhir $ {urlparams}"> halaman terakhir >> </a> </c: sebaliknya> </c: pilih> <pilih name = "indexChange" id = "indexChange" onchange = "getCurrentPage (this.value);"> <ceb var = "1" end = "$ {page.totalPage}" step = "1"> <option value = "$ {index}" $ {page.currentpage eq index? "Dipilih": ""}> $ {index} halaman </pection> </c: foreach> </schect> display per halaman: <pilih name = "everypage" id = "everypage" onchange = "seteverypage (this.Value);"> <c: foreach var = "pagecount" mulai = "5" end = "$ {" $ {page = "page =" page = "5" $ "$" value = "$ {pagecount}" $ {page.everypage eq pagecount? "selected" : ""}> ${pageCount}bar</option> </c:forEach> </select> </td> </td> </tr> <div style='display: none'> <a class=listlink id="indexPageHref" href='#'></a> </div> <script> function getCurrentPage(index){ var a = document.geteLementById ("indexPagehref"); a.href = '$ {pathUrl} & pageAction = gopage & pageKey ='+index+'$ {urlparams}'; a.setAttribute ("onClick", ''); A.click ("return false"); } function seteverypage (everypage) {var a = document.geteLementById ("indexPageHref"); var currentPage = document.getElementById ('indexChange'). nilai; a.href = '$ {pathUrl} & pageAction = setPage & pageKey ='+EveryPage+'$ {urlparams}'; a.setAttribute ("onClick", ''); A.click ("return false"); } function sortPage (sortName) {var a = document.geteLementById ("indexPageHref"); a.href = '$ {pathUrl} & pageAction = sort & pageKey ='+sortname+'$ {urlparams}'; a.setAttribute ("onClick", ''); A.click ("return false"); } </script>Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.