mysql

2012-08-09 14 views
5

के साथ वसंत एमवीसी का उपयोग करके पेजिनेशन को लागू करने का सबसे अच्छा तरीका क्या है मेरे डेटाबेस में मेरे पास 100,000 से अधिक रिकॉर्ड हैं और यह भविष्य में और भी हो सकता है। इसलिए मैं इसके लिए पेजिनेशन को कार्यान्वित करना चाहता हूं। यह पोस्ट की तरह है और एक बार थोड़ी देर में उपयोगकर्ता सबसे पुरानी या बहुत पुरानी पोस्ट पर जा सकता है। मैं वसंत एमवीसी का उपयोग कर रहा हूँ और डेटाबेस mysql है।mysql

इसके अलावा मैं पेजिनेशन को लागू करने के लिए पेजेडलिस्टहोल्डर का उपयोग कर रहा हूं। मैं प्रति पृष्ठ 25 पदों को प्रदर्शित करना चाहता हूं लेकिन अगर मैं शुरुआत में सभी 100,000 पदों को प्राप्त करता हूं तो सभी रिकॉर्ड लोड करने में कुछ समय लगता है। तो यह बेहतर है अगर मैं पहले 100 रिकॉर्ड लोड करता हूं और उसके बाद सूची को 100 अन्य रिकॉर्ड के साथ मर्ज करता हूं और इसी तरह। और यदि उपयोगकर्ता सबसे पुरानी पोस्ट देखना चाहता है तो अंतिम 100 पदों को प्राप्त करें और अंतिम पृष्ठ पर अंतिम 25 पोस्ट प्रदर्शित करें।

तो बस यह जानना चाहता था कि यह समाधान संभव होगा यदि कोई मुझे सही दिशा देने में मदद कर सके।

+1

http://stackoverflow.com/questions/2245035/how-to-implement-pagination-in-spring-mvc-3 – AlphaMale

+2

मैं setstirstResult और setMaxResults (सीमा) का उपयोग http://stackoverflow.com/questions में करता हूं/2245035/कैसे करने वाली लागू-पृष्ठांकन में वसंत-MVC-3। प्रारंभ और सीमा का उपयोग करके आप गणना कर सकते हैं कि डेटा लाने और कहां से शुरू करना है। अभी भी समझ में नहीं आता कि आप नए रिकॉर्ड लाने के बजाय सूची में मूल्यों को मर्ज क्यों करना चाहते हैं। मेरे कार्यान्वयन में मैं केवल उन रिकॉर्ड्स को प्राप्त करता हूं जिन्हें मैं वर्तमान पृष्ठ में दिखाना चाहता हूं। यदि आप कम मूल्य प्राप्त कर रहे थे तो आप कुछ पृष्ठों के लिए डेटा ला सकते हैं, लेकिन ऐसे मामले को कैशिंग या डेटाबेस में कनेक्शन की संख्या बढ़ने (बड़े उपयोगकर्ताओं के लिए) के साथ संभाला जा सकता है। – Pramod

उत्तर

6

यदि आप ORM का उपयोग कर रहे हैं, Spring Data JPA, आसानी से बॉक्स पेजिनेशन सुविधा प्रदान कर सकते हैं। कि पृष्ठांकन की जरूरत है इकाई के लिए

डीएओ इंटरफ़ेस का विस्तार होगा PagingAndSortingRepository इंटरफ़ेस की तरह: -

public interface BookRepository extends PagingAndSortingRepository<Book,Long>{ 
     // methods other than plain CRUD can be declared here 
} 

पृष्ठांकन ऑपरेशन के लिए कुंजी इंटरफ़ेस Pageable है। इसके कार्यान्वयन के लिए तैयार PageRequest अधिकतम परिणाम आकार, पृष्ठ संख्या, आकार, क्रमबद्ध करें, क्रमबद्ध दिशा, ऑफसेट जैसे पेजिनेशन इनपुट को समाहित करता है।

PageRequest हैंडलर विधि में अनुरोध विशेषता से दिलवाया जा सकता है और इस तरह के भंडार विधि के लिए एक तर्क के रूप में पारित: -

Page<Book> result = bookRepository.findAll(pageRequest); 

वापसी प्रकार Page, आसानी से जैसे विवरण प्रस्तुत करने के लिए दृश्य परत में दोहराया जा सकता है परिणाम आकार, परिणामों की कुल संख्या, क्रमबद्ध क्रम, क्रमबद्ध दिशा।

मुझे यह tutorial सहायक पाया गया।