هناك طريقتان شائعتان لتنفيذ الترحيل:
1. تعديل SQL في كل مرة تقوم فيها بتشغيل الصفحة ، ونقل المعلمات ذات الصلة إلى SQL ، وانتقل إلى قاعدة البيانات لمعرفة بيانات الصفحة في الوقت الفعلي وعرضها.
2. اكتشف جميع البيانات الموجودة في جدول معين في قاعدة البيانات ، ثم الحصول على بيانات معينة وعرضها عن طريق معالجتها في منطق العمل.
بالنسبة لنظام الإدارة البسيط الذي يحتوي على كمية صغيرة من البيانات ، فإن طريقة التنفيذ الأولى سهلة الاستخدام نسبيًا لتنفيذ وظيفة الترحيل. تقدم هذه المقالة أيضًا هذه الطريقة لك:
قصاصة الكود:
1. Page.Java
حزمة com.cm.contract.common ؛ استيراد org.apache.commons.lang.stringutils ؛ استيراد org.apache.commons.lang.builder.toStringBuilder ؛ / ** فئة التراجع*Author Fengwei*date 2016-5-23*/ صفحة الطبقة العامة تنفذ java.io.serializable {private static final long serialversionuid = 1l ؛ // الصفحة السابقة الخاصة بالبراعة المنطقية ؛ // الصفحة التالية boolean boolean hasnextpage ؛ // كم عدد العناصر المعروضة لكل صفحة: الافتراضي 20 Private Long Everypage = 20L ؛ // إجمالي عدد الصفحات الخاصة الطويلة الطويلة ؛ // الصفحة الحالية: الصفحة الافتراضية 1 Private Long Currentpage = 1L ؛ // ابدأ التراكب الخاص الطويل beginendex ؛ // end subcript private endinindex ؛ // كم عدد TotalCount الطويل الخاص ؛ // اسم عمود الفرز اسم السلسلة الخاصة sortname ؛ // فرز الحالة الخاصة السلسلة الخاصة ؛ // فرز المعلومات سلسلة خاصة sortinfo ؛ // فرز ما إذا كان لفرز النوع المنطقي الخاص = خطأ ؛ سلسلة خاصة defaultInfo = "" ؛ السلسلة العامة getDefaultInfo () {return defaultInfo ؛ } public void setDefaultInfo (String defaultInfo) {this.defaultInfo = defaultInfo ؛ } السلسلة العامة getortinfo () {return sortinfo ؛ } public void setSortInfo (String sortinfo) {this.sortinfo = sortinfo ؛ } السلسلة العامة getortName () {return SortName ؛ } public void setSortName (String sortName) {setPagesortState (sortName) ؛ } السلسلة العامة getortState () {return SortState ؛ } public void setSorTState (String SortState) {this.sortState = SortState ؛ } public page () {} / *** شائع الاستخدام ، يستخدم لحساب paging** / public page (long totalRecords) {this.totalCount = TotalRecords ؛ setotalpage (getTotalPage (TotalRecords)) ؛ } / ** * استخدم * عند تحديد عدد الإدخالات التي يتم عرضها في كل صفحة * * / صفحة عامة (Long EveryPage ، TotalRecords Long) {this.everypage = earyPage ؛ this.totalCount = TotalRecords ؛ setotalpage (getTotalPage (TotalRecords)) ؛ } / *** رمز حالة حالة param* param القيمة كم عدد الصفحات التي يجب الانتقال إليها أو تعيين عدد العناصر التي يجب عرضها لكل صفحة أو يتم فرزها كاسم عمود فرز* / pagestate public pagestate (int index ، قيمة السلسلة) {sort = false ؛ Switch (index) {case 0: seteverypage (long.parselong (value)) ؛ break ؛ الحالة 1: أولاً () ؛ استراحة ؛ الحالة 2: السابق () ؛ كسر ؛ الحالة 3: التالي () ؛ كسر ؛ الحالة 4: الماضي () ؛ استراحة ؛ الحالة 5: الفرز = صحيح ؛ فرز (قيمة) ؛ كسر ؛ الحالة 6: // إلى الصفحة المحددة setCurrentPage (long.parselong (value)) ؛ استراحة؛ }} / *** الصفحة السابقة* / private void first () {currentPage = 1L ؛ } private void previce () {currentPage-- ؛ } private void next () {currentPage ++ ؛ } private void last () {currentPage = TotalPage ؛ } private void sort (String SortName) {// اضبط حالة الفرز setPagesortState (sortName) ؛ } / *** احسب العدد الإجمالي للصفحات** / private long getTotalPage (long totalRecords) {long totalPage = 0l ؛ everypage = earyPage == NULL؟ 10L: Everypage ؛ إذا (totalRecords ٪ everypage == 0) TotalPage = TotalRecords / earyPage ؛ else {totalPage = TotalRecords / earyPage + 1 ؛ } إرجاع totalpage ؛ } public long getBeginIndex () {this.beginIndex = (CurrentPage - 1) * earyPage ؛ إرجاع this.beginIndex ؛ } public void setBeginIndex (long beginindex) {this.beginIndex = beginIndex ؛ } public getCurrentPage () {this.currentPage = currentPage == 0؟ 1: page current ؛ إرجاع هذا. } public void setCurrentPage (long currentpage) {if (0 == currentPage) {currentPage = 1L ؛ } this.currentPage = currentpage ؛ } public long geteverypage () {this.everypage = earyPage == 0؟ 10: كل صفحة ؛ إرجاع هذا. } public void seteverypage (long earypage) {this.everypage = earyPage ؛ } boolean gethasnextpage () {this.hasNextPage = (CurrentPage! = TotalPage) && (TotalPage! = 0) ؛ إرجاع this.hasnextPage ؛ } public void sethasNextPage (boolean hasnextpage) {this.hasNextPage = hasnextPage ؛ } gethasprepage boolean العامة () {this.hasprepage = currentpage! = 1 ؛ إرجاع هذا. } public void sethasprepage (boolean hasprepage) {this.hasprepage = hasprepage ؛ } public getTotalPage () {return this.totalPage ؛ } public void settotalpage (long totalpage) {if (this.currentPage> totalPage) {this.currentPage = TotalPage ؛ } this.totalPage = TotalPage ؛ } public getTotalCount () {return this.totalCount ؛ } public void settoTalCount (long totalCount) {setTotalPage (getTotalPage (totalCount)) ؛ this.totalCount = TotalCount ؛ } Override public string toString () {return toStringBuilder.ReflectionToString (this) ؛ } /*** قم بتعيين حالة الفرز** /private void setPagesortState (String newPagesortName) {// judge ما إذا كان حقل الفرز السابق فارغًا إذا (stringUtils.isempty (sortName)) {// الفرز الافتراضي هو تصعيد ترتيب هذا. this.sortinfo = pageutil.page_asc ؛ } آخر {if (stringUtils.equalsignoreCase (newPagesortName ، sortName)) {// ugne the sortstate sorting status value if (stringUtils.equalsignorecase (sortState ، pageutil.asc))) this.sortinfo = pageutil.page_desc ؛ } آخر {this.sortState = pageutil.asc ؛ this.sortinfo = pageutil.page_asc ؛ }} آخر {// 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 getendinindex () {this.endinIndex = (currentpage) * earyPage ؛ إرجاع endinindex ؛ } public void setendinIndex (long endinIndex) {this.endinIndex = endInIndex ؛ }} 2.pagestate.java
حزمة com.cm.contract.common ؛ استيراد org.apache.commons.lang.stringutils ؛ ! للذهاب * */ gopage ؛ / *** param value index name* return index index index index index*/ public static int getordinal (string value) {int index = -1 ؛ if (stringUtils.isempty (value)) {return index ؛ } string newValue = stringUtils.trim (value) .ToupperCase () ؛ حاول {index = valueof (newValue) .ordinal () ؛ } catch (intervalalArgumentException e) {} index ؛ }} 3.pageutil.java
/ ** * فئة أداة الترقيم * Author Fengwei * date 2016-5-23 */ public class pageutil {public static final string asc = "asc" ؛ السلسلة النهائية الثابتة العامة desc = "desc" ؛ السلسلة النهائية الثابتة العامة page_desc = "↓" ؛ السلسلة النهائية الثابتة العامة page_asc = "↑" ؛ السلسلة النهائية الثابتة العامة page_null = "" ؛ SESTATION SESSITE_PAGE_KEY = "صفحة" ؛ / *** تهيئة فئة الترحيل* param initpagesql استعلام غير مسبب sql* param totalCount العدد الإجمالي للصفوف* @param index status* @param قيمة فقط عند تحديد عدد القطع التي يتم عرضها لكل صفحة ، لن تكون القيمة null ، فالأجلة غير خالية من صفحة inintpage (page inintpage long ، if (index <0) {page = new page (totalCount) ؛ } آخر { / ** كم عدد القطع المعروضة لكل صفحة* / long EverPage = null == القيمة؟ 10: long.parselong (القيمة) ؛ / ** احصل على فئة الترحيل في الجلسة لتسهيل حفظ حالة ترحيل الصفحة*/ page = sessionpage ؛ page.seteverypage (EverPage) ؛ page.SetTotalCount (TotalCount) ؛ } صفحة الإرجاع ؛ } / *** عندما تنقر الصفحة النقرات: الصفحة الرئيسية ، الصفحة السابقة ، الصفحة التالية ، الصفحة الأخيرة ، الفرز ، والصفحة هي الصفحة الأولى* param index status* param value sort sort name أو الصفحة هي الصفحة الأولى* / الصفحة العامة execpage (int index ، قيمة السلسلة ، صفحة جلسة الجلسة) {page page = sitmpage ؛ / ** طريقة الاتصال لحساب الترحيل*/ page.pagestate (الفهرس ، القيمة) ؛ صفحة العودة ؛ }} 4.DefaultController.java يمكن استخدام هذا الجزء بمرونة
حزمة com.cm.contract.common ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد javax.servlet.http.httpsession ؛ استيراد org.springframework.web.bind.annotation.modelattribute ؛ /** * استخراج الطلب العام وعنوان الاستجابة: DefaultController الوصف: * * Author Fengwei * date 2016-5-6 3:30:32 PM * /الفئة العامة DefaultController { /** * The Three Layer Epination Class of Oracel تؤدي حساب الوفاة قبل عرض البيانات! * * param querysql * عبارة الاستعلام SQL ، وليس paginated * param totalCount * إجمالي عدد الإدخالات التي تم الحصول عليها بناءً على الاستعلام sql * @param columnnamedescorasc name + method totalcount) } / ** حالة الصفحة ، تم تصميم هذه الحالة على الصفحة وليس لها أي علاقة مع Business* / String PageAction = request.getParameter ("pageaction") ؛ قيمة السلسلة = request.getParameter ("pagekey") ؛ / ** احصل على فهرس للحكم على حالة حالة الصفحة*/ int index = pageState.getorDinal (pageAction) ؛ صفحة الصفحة = فارغة ؛ / ** * index <1 لا يوجد سوى حالتان 1 عند المكالمة الأولى ، لا توجد قيمة في فئة حالة الصفحة الفارغة -1 2 عندما تحدد الصفحة عدد القطع المعروضة لكل صفحة: * index = 0 ، عندما يكون هناك العديد من القطع المعروضة لكل صفحة ، يجب إعادة حساب فئة الصفحة * * */ page sesspage = getPage (طلب) ؛ if (index <1) {page = pageutil.inintPage (TotalCount ، index ، value ، sessionpage) ؛ } آخر {page = pageutil.execpage (الفهرس ، القيمة ، sessionpage) ؛ } setSession (طلب ، صفحة) ؛ صفحة العودة ؛ } صفحة getPage الخاصة (طلب httpservletrequest) {page page = (page) request.getSession (). getAttribute (pageutil.session_page_key) ؛ if (page == null) {page = new page () ؛ } صفحة الإرجاع ؛ } setSession private void (طلب httpservletrequest ، صفحة الصفحة) {request.getSession (). setAttribute (pageutil.session_page_key ، page) ؛ }} كيفية استخدام:
5. Controller.java
/ *** شروط الترحيل التي تمت إضافتها بواسطة Model* ExecutePage طريقة مكتوبة في فئة الأدوات* نموذج Param*/ Controller الفئة العامة CmlogController تمتد DefaultController {REquestMapping ("index.do") modelandview userinto (نموذج modelmap ، string username) {namester = username ؛ model.addattribute ("اسم المستخدم" ، namestr) ؛ // عدد الصفحات طويلة TotalCount = logService.pageCounts (نموذج) ؛ // صفحة عرض الصفحة = executePage (طلب ، TotalCount) ؛ if (page.issort ()) {model.put ("ordername" ، page.getSortName ()) ؛ model.put ("descasc" ، page.getSorTState ()) ؛ } آخر {model.put ("ordername" ، "logtime") ؛ model.put ("descasc" ، "desc") ؛ } model.put ("startIndex" ، page.getBeginIndex ()) ؛ model.put ("EndIndex" ، page.getendinIndex ()) ؛ modelandview mv = new ModelAndView () ؛ // pagination query query loglist = logservice.pagelist (model) ؛ mv.addobject ("LogList" ، LogList) ؛ mv.setViewName ("/jsp/log") ؛ إرجاع MV ؛ }} 6. عدة بيانات استعلام في مايباتيس
// استعلام pagination <select id = "pagelist" parametertype = "map" resultmap = "baseresultmap"> حدد ttt.* من (حدد tt.* حقن SQL أثناء التطوير: $ ، مريح لتصحيح SQL ، استخدمه أثناء الإصدار: -> و type = #{type ، jdbctype = varchar} </if> </where> order by $ {ordername} $ {descasc}) ttt) ttt <where> <where> <"إذا test =" <! '٪ $ {username} ٪' </if> </where> </select> 7. صفحة مكتب الاستقبال index.jsp
// ما عليك سوى إضافة div في تخطيط الصفحة // username كشرط // <jsp: param name = "url" value = "/log/index.do؟"/> يجب أن توجد علامة أسئلة بدون شرط <body> <div align = "right" style = "height: 20"> <JSP: تضمين page = "/jsp/page.jsp" value = "/log/index.do؟ username = $ {username}"/> </jsp: include> </viv> </body> 8. page.jsp المشار إليها
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <٪@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core <c: set var = "path" value = "$ {pagecontext.request.contextpath}" /> <c: set var = "url" value = "$ {param.url}" /> <c: set var = "urlparams value = "$ {path} /$ {url}" /> <tr> <td colspan = "5"> $ {urlparams} total $ {page.totalcount} total $ {page.totalpage} pages لكل صفحة $ {page.everypage} test = "$ {page.hasprepage eq false}"> << الصفحة الرئيسية </prepage </c: عندما> <c: خلاف ذلك> <a href = "$ {pathurl} & pageAction = first $ {urlparams}"> <sopage </ a> a href = "$ {pathurl} /> <الصفحة السابقة </a> </c: خلاف ذلك> </c: اختر> || <C: اختر> <C: عندما test = "$ {page.hasNextPage EQ false}"> الصفحة التالية> الصفحة الأخيرة >> </c: عندما> <c: خلاف ذلك> <a href = "$ {pathurl} & pageaction = next $ {urlparams}"> الصفحة التالية> </a> <a href = "$ {pathurl} & pageaction = last $ {urlparams}"> الصفحة الأخيرة >> </a> </c: خلاف ذلك> </c: اختر> <select name = "indexchange" id = "indexchange" onchange = "getCurrentPage (this.value) ؛" end = "$ {page.totalPage}" step = "1"> <option value = "$ {index}" $ {page.currentPage eq؟ "محدد": ""}> $ {index} صفحة </orpue> </c: foreach> </select> عرض لكل صفحة: <select name = "earyPage" id = "earyPage" onChange = "seteverypage (this.value) ؛ value = "$ {pagecount}" $ {page.everypage eq pagecount؟ "محدد": ""}> $ {pageCount} bar </potion> </c: foreach> </select> </td> </td> </tr> <div style = 'display: none'> <a class = listlink id = "indexpagehref" href = '#/a> </viv> document.getElementById ("indexpageHref") ؛ a.href = '$ {pathurl} & pageAction = gopage & pagekey ='+index+'$ {urlparams}' ؛ A.SetAttribute ("onClick" ، '') ؛ انقر ("إرجاع خطأ") ؛ } وظيفة seteverypage (earyPage) {var a = document.getElementById ("indexpageHref") ؛ var currentpage = document.getElementById ('indexChange'). value ؛ a.href = '$ {pathurl} & pageAction = setPage & pagekey ='+earyPage+'$ {urlparams}' ؛ A.SetAttribute ("onClick" ، '') ؛ انقر ("إرجاع خطأ") ؛ } function sortpage (sortName) {var a = document.getElementById ("indexpageHref") ؛ a.href = '$ {pathurl} & pageAction = sort & pagekey ='+sortname+'$ {urlparams}' ؛ A.SetAttribute ("onClick" ، '') ؛ انقر ("إرجاع خطأ") ؛ } </script>ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.