עימוד ומיון באמצעות Spring Data JPA

1. סקירה כללית

עימוד לעיתים קרובות מועיל כשיש לנו מערך נתונים גדול ואנחנו רוצים להציג אותו למשתמש בנתחים קטנים יותר.

כמו כן, לעתים קרובות אנו צריכים למיין את הנתונים לפי קריטריונים מסוימים תוך כדי החלפה.

במדריך זה, נלמד כיצד לעמוד ולמיין בקלות באמצעות Spring Data JPA.

2. הגדרה ראשונית

ראשית, נניח שיש לנו a מוצר הישות כמחלקת הדומיינים שלנו:

מוצר מחלקה ציבורית @Entity {@ Id מזהה פרטי פרטי; שם מחרוזת פרטי; מחיר כפול פרטי; // בונים, גטרים וקובעים}

כל אחד משלנו מוצר למופעים יש מזהה ייחודי: תְעוּדַת זֶהוּת, שלה שֵׁם וזה שלה מחיר קשור אליו.

3. יצירת מאגר

כדי לגשת ל מוצרs, נצטרך a מאגר מוצר:

ממשק ציבורי ProductRepository מרחיב את PagingAndSortingRepository {רשימה findAllByPrice (מחיר כפול, Pageable pageable); }

בכך שהוא מתארךPagingAndSortingRepository, אנחנו מקבלים findAll (Pageable pageable) ו findAll (מיין מיין) שיטות החלפה ומיון.

לעומת זאת, יכולנו לבחור להאריך מאגר Jpa במקום זאת, ככל שהוא נמשך PagingAndSortingRepository גַם.

ברגע שנאריך PagingAndSortingRepository, אנו יכולים להוסיף שיטות משלנו תומכי ו סוג כפרמטרים, כמו שעשינו כאן עם findAllByPrice.

בואו נסתכל כיצד לעמוד את שלנו מוצרבאמצעות השיטה החדשה שלנו.

4. עימוד

ברגע שיש לנו המאגר שלנו המשתרע על PagingAndSortingRepository, אנחנו רק צריכים:

  1. צור או השג א PageRequest אובייקט, שהוא יישום של תומכי מִמְשָׁק
  2. תעביר את ה PageRequest אובייקט כטיעון לשיטת המאגר שאנו מתכוונים להשתמש בו

אנחנו יכולים ליצור PageRequest חפץ על ידי העברת מספר העמוד המבוקש וגודל העמוד.

פה ספירת העמודים מתחילה באפס:

Pageable firstPageWithTwoElements = PageRequest.of (0, 2); Pageable secondPageWithFiveElements = PageRequest.of (1, 5);

באביב MVC, אנו יכולים גם לבחור להשיג את תומכי מופע בבקר שלנו באמצעות תמיכת האינטרנט של Spring Data.

ברגע שיש לנו את שלנו PageRequest אנו יכולים להעביר אותו תוך הפעלת שיטת המאגר שלנו:

עמוד allProducts = productRepository.findAll (firstPageWithTwoElements); רשימת allTenDollarProducts = productRepository.findAllByPrice (10, secondPageWithFiveElements);

ה findAll (Pageable pageable) שיטה כברירת מחדל מחזירה א עמוד לְהִתְנַגֵד.

למרות זאת, אנו יכולים לבחור להחזיר א עמוד, א פרוסה, או א רשימה מכל אחת מהשיטות המותאמות אישית שלנו להחזרת נתונים מפוענחים.

א עמוד למשל, בנוסף לרשימה של מוצרs, יודע גם על המספר הכולל של הדפים הזמינים. זה מפעיל שאילתת ספירה נוספת כדי להשיג אותה. כדי למנוע עלות תקורה כזו, נוכל להחזיר a פרוסה או א רשימה.

א פרוסה רק יודע אם הנתח הבא זמין או לא.

5. עימוד ומיון

באופן דומה, כדי לסדר את תוצאות השאילתות שלנו, נוכל פשוט להעביר מופע של סוג לשיטה:

עמוד allProductsSortedByName = productRepository.findAll (Sort.by ("name"));

עם זאת, מה אם נרצה גם למיין וגם לדף את הנתונים שלנו?

אנו יכולים לעשות זאת על ידי העברת פרטי המיון אל תוך שלנו PageRequest האובייקט עצמו:

Pageable sortedByName = PageRequest.of (0, 3, Sort.by ("שם")); Pageable sortedByPriceDesc = PageRequest.of (0, 3, Sort.by ("price"). יורד ()); Pageable sortedByPriceDescNameAsc = PageRequest.of (0, 5, Sort.by ("price"). יורד (). ו- (Sort.by ("name")));

בהתבסס על דרישות המיון שלנו, אנו יכולים לציין את שדות המיון ואת כיוון המיון תוך כדי יצירת שלנו PageRequest למשל.

כרגיל, נוכל לעבור את זה תומכי הקלד מופע לשיטת המאגר.

6. מסקנה

במאמר זה למדנו כיצד לעמוד ולמיין את תוצאות השאילתות שלנו ב- Spring Data JPA.

כמו תמיד, דוגמאות הקוד המלאות המשמשות במאמר זה זמינות באתר Github.