ملاحظة: لقد رأيت مجموعة متنوعة من الترحيل عبر الإنترنت ، والتي يزعم الكثير منها أنها شائعة ، ولكنها غالبًا ما تكون مرضية: بعضها يضيف معلومات عن عنوان عنوان URL إلى فئة الترحيل ، وبعضها يقوم أيضًا بإجراءات الترحيل في فئة الترحيل (هذا الإجراء هو مسألة تشغيل قاعدة البيانات). الآن ، بعد ملخصي وصقله:
سواء كنت تصفح نفسك يدويًا أو تستخدم مساعدة الإطار. يمكن أن تساعدك فئة الأدوات هذه على تحقيق تأثيرات مستقرة للترجمة (بما في ذلك وظيفة ترقيم صفحة التنقل) ، وطريقة الاستخدام بسيطة نسبيًا: حسنًا ، أقل هراء ، الرمز هو كما يلي:
حزمة test.dao ؛ استيراد java.util.list ؛ / *** فئة الأدوات للترقيم* @Author لا تأخذ الاسم الشبكي*/ Public Class Pager <T> {List Private List <T> ؛ // سجل نتائج الكائن مجموعة private int total = 0 ؛ // إجمالي السجلات حد int الخاص = 20 ؛ // عدد السجلات المعروضة لكل صفحة صفحات int الخاصة = 1 ؛ // Total Pages Private Int Pagenumber = 1 ؛ // الصفحة الحالية isfirstpage isfirstpage = false ؛ // ما إذا كانت الصفحة الأولى الخاصة بوحن المنطقي islastpage = false ؛ // ما إذا كانت آخر الصفحة الخاصة بالصفحة المنطقية HaspreviousPage = false ؛ // هل هناك صفحة سابقة boolean boolean hasnextpage = false ؛ // هل هناك صفحة تالية خاصة بالملاحة int = 8 ؛ // عدد أرقام صفحات التنقل الخاصة int [] NavigationPagenumbers ؛ // جميع أرقام صفحات التنقل العامة (int total ، int pagenumber ، limit) ؛ } pager pager (int total ، int pagenumber ، int limit) {init (total ، pagenumber ، limit) ؛ } private void init (int total ، int pagenumber ، int limit) {init (total ، pagenumber ، limit) ؛ } private void init (int total ، int pagenumber ، int limit) {// اضبط المعلمات الأساسية this.total = total ؛ this.limit = الحد ؛ this.pages = (this.total-1) /this.limit+1 ؛ // صحيح في الأصل وفقًا للرقم الحالي الذي قد يكون غير صحيح إذا (pagenumber <1) {this.pagenumber = 1 ؛ } آخر إذا (pagenumber> this.pages) {this.pagenumber = this.pages ؛ } آخر {this.pagenumber = pagenumber ؛ } // بعد إعداد المعلمات الأساسية ، قم بحساب صفحة التنقل calcnavatePagenumbers () ؛ // وكذلك تحديد حدود الصفحة judgepageboudary () ؛ } /*** احسب صفحة التنقل* /private void calcnavatePagenumbers () {// عندما يكون العدد الإجمالي للصفحات أقل من أو يساوي عدد صفحات التنقل إذا (pages <= tavigatepages) {tavigatePagenumbers = new int [pages] ؛ لـ (int i = 0 ؛ i <pages ؛ i ++) {tavigatePagenumbers [i] = i+1 ؛ }} else {// عندما يكون العدد الإجمالي للصفحات أكبر من عدد صفحات التنقل cavigatePagenumbers = new int [tavigatepages] ؛ int startNum = pagenumber-navigatepages/2 ؛ int endnum = pagenumber+tavigatepages/2 ؛ if (startNum <1) {startNum = 1 ؛ // (صفحة التنقل الأولى لـ (int i = 0 ؛ i <ivateGatePages ؛ i ++) {tavigatePagenumbers [i] = startNum ++ ؛}} آخر إذا (endnum> pages) {endNum = pages ؛ // page the typicatePages (int i = navatited-1 ؛ } آخر {// جميع الصفحات المتوسطة لـ (int i = 0 ؛ i <ivategate ؛ Pagenumber! = 1 ؛ */ public int getTotal () {return total ؛ getPagenumber () haspreviouspage () {return hasprevious ؛ . . } sb.append ("، list.size =" list.size () ؛ حول الاستخدام: الخطوات هي كما يلي:
1). بغض النظر عما إذا كان يتم استخدام الاستعلام المشروط ، احسب أولاً العدد الإجمالي المقابل للإدخالات.
2). بناء فئة النداء (يمكن إجراء معلمات الحد وفقًا لمقدمةها الخاصة)
3). الحصول على معلمة Pagenumber التي تم تصحيحها تلقائيًا وفقًا لفئة Pager التي تم إنشاؤها ، وضرب -1 وحدها لتكون بمثابة موقع السجل الأول الذي يتم الاستعلام عنه.
4). قم بتعيين جميع السجلات التي يتم فحصها من موضع البداية حتى الحد الأقصى. (إذا كنت ترحيل يدويًا ، فمن الممكن أيضًا أن تكون المعلمة الثانية هي إزاحة الموضع للسجل النهائي ، اعتمادًا على قاعدة البيانات)
5). قم بتعيين القائمة التي تم الاستعلام عنها بواسطة [حالة] في كائن النداء والعودة.
6). في طبقة العرض التقديمي ، يمكنك استخدام كائن الصفحة من خلال Servlet أو الإجراء أو الحصول على كائن Pager مباشرة. يجب أيضًا ترك المسألة المحددة المتمثلة في الربط عنوان URL إلى طبقة العرض التقديمي لإكمالها.
int totalCount = integer.valueof (QueryCount.Uniqueresult (). toString ()) ؛ Pager Pager = New Pager (TotalCount ، Pagenumber ، limit) ؛ QueryList.setFirStresult ((pager.getPagenumber ()-1)*limit) ؛ // معالجة المعالجة التي تتحمل الأخطاء. Pager.setList (QueryList.List ()) ؛ إرجاع النداء
الرمز أعلاه هو مثال بسيط باستخدام السبات. إذا كنت تستخدم الصفحات اليدوية ، فاتبع الخطوات المراد استخدامها.
بالطبع ، يمكن إكمال ترقيم الصفحات في طبقة DAO أو في طبقة الخدمة. يستدعي Servlet أو Action رمز طبقة الخدمة. أنا شخصياً أعتقد أن: الترحيل هو في الواقع حاجة تجارية ، بحيث يمكن وضعها في مستوى العمل. نظرًا لأن طبقة DAO توفر قائمة الإحصاءات [instrument Quister] المقابلة وعدد [الحالة] ، يمكن لطبقة العمل إجراء مكالمات الطريقة وفقًا لاحتياجاتها الخاصة (يجب أن تتبعها فقط خطوات ثابتة. بالطبع ، عدة مرات ، فقد وضعت الأعمال خطوات عملية).
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.