التقسيم إلى صفحات والفرز
أعد مجموعات البيانات الكبيرة بكفاءة
التقسيم إلى صفحات والفرز درس مجاني في Spring Boot 4 Microservices & REST APIs على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Spring Boot 4 Microservices & REST APIs، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Spring Boot 4 Microservices & REST APIs 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Why Paginate
Returning thousands of rows at once is slow and memory-heavy. Pagination fetches one page at a time.
Spring Data provides Pageable, Page, and Sort for this.
PagingAndSortingRepository
JpaRepository already includes paging and sorting support, so you get these methods for free.
public interface UserRepository
extends JpaRepository<User, Long> {
}Creating a Pageable
PageRequest.of(page, size) builds a request. Page numbers are zero-based.
Pageable pageable = PageRequest.of(0, 20);
Page<User> page = userRepository.findAll(pageable);The Page Object
A Page carries the content plus metadata.
List<User> content = page.getContent();
long total = page.getTotalElements();
int pages = page.getTotalPages();
boolean hasNext = page.hasNext();Sorting
Build a Sort and pass it alone or inside a PageRequest.
Sort sort = Sort.by("name").ascending();
List<User> sorted = userRepository.findAll(sort);Combining Sort and Paging
Pass a Sort into PageRequest.of.
Pageable pageable = PageRequest.of(
0, 20, Sort.by("name").descending());
Page<User> page = userRepository.findAll(pageable);Multiple Sort Orders
Chain sort orders for tie-breaking.
Sort sort = Sort.by(
Sort.Order.asc("lastName"),
Sort.Order.desc("createdAt"));Paging Derived Queries
Add a Pageable parameter to any derived query method.
Page<User> findByActiveTrue(Pageable pageable);Slice vs Page
A Slice knows only whether a next page exists, skipping the expensive COUNT query that Page runs. Use Slice for infinite scroll.
Slice<User> findByActiveTrue(Pageable pageable);Pageable from the Web Layer
Spring MVC can bind page, size, and sort request params into a Pageable automatically.
@GetMapping("/users")
public Page<User> list(Pageable pageable) {
return userRepository.findAll(pageable);
}
// GET /users?page=0&size=20&sort=name,descMapping Page Content to DTOs
Transform a Page's entities to DTOs while preserving pagination metadata with map.
Page<UserDto> dtos = page.map(
user -> new UserDto(user.getName(), user.getEmail()));Quick Check
Test your understanding of pagination.
Recap
You learned pagination and sorting:
PageRequest.of(page, size)— page is zero-basedPagecarries content plus totals;Sliceskips the countSort.by(...)for ordering- Web layer binds
page/size/sortinto aPageable
الأسئلة الشائعة
هل درس «التقسيم إلى صفحات والفرز» مجاني؟
نعم — نص درس «التقسيم إلى صفحات والفرز» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Spring Boot 4 Microservices & REST APIs، انتقل إلى CoddyKit PRO. تتضمن دورة Spring Boot 4 Microservices & REST APIs 4 دروس في المجموع.
ماذا ستتعلم في «التقسيم إلى صفحات والفرز»؟
أعد مجموعات البيانات الكبيرة بكفاءة تتمرن على Spring Boot 4 Microservices & REST APIs مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Spring Boot 4 Microservices & REST APIs؟
لا تُشترط خبرة سابقة. Spring Boot 4 Microservices & REST APIs على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «التقسيم إلى صفحات والفرز»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Spring Boot 4 Microservices & REST APIs هذا؟
نعم. كل درس في Spring Boot 4 Microservices & REST APIs يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الاستعلامات الديناميكية باستخدام Specifications
- الإسقاطات وDTOs
- التدقيق باستخدام @CreatedDate
- التقسيم إلى صفحات والفرز