2012-08-09 94 views
5

Trong cơ sở dữ liệu của tôi, tôi có hơn 100.000 bản ghi và nó có thể nhiều hơn trong tương lai. Vì vậy, tôi muốn thực hiện phân trang cho this.Its như bài viết và một lần trong một thời gian người dùng có thể đi đến các bài viết cũ hoặc quá cũ. Tôi đang sử dụng MVC mùa xuân và cơ sở dữ liệu là mysql.cách tốt nhất để thực hiện phân trang bằng cách sử dụng Spring MVC với mysql

Ngoài ra tôi đang sử dụng PagedListHolder để triển khai phân trang. Tôi muốn hiển thị 25 bài viết trên mỗi trang nhưng nếu tôi lấy tất cả 100.000 bài viết ban đầu thì phải mất một chút thời gian để tải tất cả các bản ghi. Vì vậy, là tốt hơn nếu tôi lần đầu tiên tải 100 hồ sơ và sau đó hợp nhất danh sách với 100 hồ sơ và vv. Và nếu người dùng muốn xem bài đăng cũ nhất thì hãy tìm 100 bài đăng cuối cùng và hiển thị 25 bài đăng cuối cùng trên trang cuối cùng.

Vì vậy, chỉ muốn biết là giải pháp này khả thi sẽ làm việc này nếu ai đó có thể giúp tôi để cung cấp cho đúng hướng.

+1

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

+2

Tôi sử dụng setFirstResult và setMaxResults (giới hạn) như trong http://stackoverflow.com/questions/2245035/cách thực hiện-pagination-in-spring-mvc-3. Sử dụng bắt đầu và giới hạn bạn có thể tính toán từ nơi bắt đầu tìm nạp dữ liệu và số lượng. Vẫn không hiểu tại sao bạn muốn hợp nhất các giá trị trong danh sách thay vì tìm nạp bản ghi mới. Trong triển khai của tôi, tôi chỉ lấy số lượng bản ghi mà tôi muốn hiển thị trong trang hiện tại. Nếu bạn đang tìm nạp ít giá trị hơn, bạn có thể tìm nạp dữ liệu cho một số trang một cách uể oải, nhưng trường hợp này có thể được xử lý bằng bộ nhớ đệm hoặc tăng số lượng kết nối trong cơ sở dữ liệu (đối với người dùng lớn). – Pramod

Trả lời

6

Nếu bạn đang sử dụng ORM, Spring Data JPA, có thể dễ dàng cung cấp tính năng phân trang ngoài hộp.

DAO giao diện cho tổ chức mà cần pagination sẽ mở rộng giao diện PagingAndSortingRepository như: -

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

Giao diện chính cho hoạt động pagination là Pageable. Sẵn sàng sử dụng triển khai thực hiện PageRequest đóng gói các đầu vào phân trang như kích thước kết quả tối đa, số trang, kích thước, sắp xếp theo, sắp xếp hướng, bù đắp.

PageRequest có thể được lấy từ yêu cầu thuộc tính trong một phương pháp xử lý và thông qua như là một cuộc tranh cãi với phương pháp kho như: -

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

Sự trở lại loại Page, có thể dễ dàng lặp theo quan điểm của lớp để làm cho các chi tiết như kích thước kết quả, tổng số kết quả, thứ tự sắp xếp, hướng sắp xếp.

Tôi tìm thấy điều này tutorial hữu ích.

Các vấn đề liên quan