Spring Boot יישום CRUD עם Thymeleaf

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

יישום שכבות DAO המספקות פונקציונליות CRUD בישויות JPA יכולה להיות משימה שחוזרת על עצמה זמן רב שנרצה להימנע ממנה ברוב המקרים. למרבה המזל, Spring Boot מקל על יצירת יישומי CRUD באמצעות שכבה של מאגרי CRUD סטנדרטיים מבוססי JPA.

במדריך זה נלמד כיצד לפתח יישום אינטרנט CRUD עם Spring Boot ו- Thymeleaf.

2. התלות של Maven

במקרה זה, אנו נסמך על האב-אתחול-התחלה-הורה לניהול תלות פשוט, גרסאות ותצורת פלאגין. כתוצאה מכך, לא נצטרך לציין את הגרסאות של התלות בפרויקט שלנו pom.xml קובץ, למעט עקיפת גרסת Java:

 org.springframework.boot spring-boot-starter-parent 2.2.2.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot- starter-data-jpa com.h2database h2 

3. שכבת התחום

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

למען הפשטות, שכבה זו תכלול מחלקה אחת אשר תהיה אחראית על הדוגמנות מִשׁתַמֵשׁ ישויות:

משתמש בכיתה ציבורית @Entity {@Id @GeneratedValue (אסטרטגיה = GenerationType.AUTO) מזהה פרטי ארוך; @NotBlank (message = "שם חובה") שם מחרוזת פרטי; @NotBlank (message = "דוא"ל חובה") דוא"ל מחרוזת פרטי; // קונסטרוקטורים סטנדרטיים / סטרים / getters / toString}

בואו נזכור שהערנו את הכיתה עם ה- @יֵשׁוּת ביאור. לכן, יישום ה- JPA, שהוא מצב שינה, ב- במקרה זה, יוכלו לבצע פעולות CRUD בגופי התחום. לקבלת מדריך היכרות למצב שינה, בקרו במדריך שלנו למצב שינה 5 עם אביב.

בנוסף, הגבלנו את ה- שֵׁם ו אימייל שדות עם @NotBlank אילוץ. זה מרמז על כך שנוכל להשתמש ב- Hibernate Validator לאימות השדות המוגבלים לפני התמשכות או עדכון של ישות במסד הנתונים.

לקבלת היסודות בנושא זה, עיין במדריך המשויך שלנו בנושא אימות שעועית.

4. שכבת המאגר

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

אביב נתונים JPA מאפשר לנו ליישם מאגרים מבוססי JPA (שם מהודר ליישום תבנית DAO) עם מינימום מהומה.

Spring Data JPA הוא מרכיב מרכזי של Spring Boot spring-boot-starter-data-jpa מה שמקל על הוספת פונקציונליות CRUD באמצעות שכבת הפשטה עוצמתית הממוקמת על גבי יישום JPA. שכבת הפשטה זו מאפשרת לנו לגשת לשכבת ההתמדה מבלי שנצטרך לספק יישומי DAO משלנו מאפס.

כדי לספק ליישום שלנו פונקציונליות בסיסית של CRUD מִשׁתַמֵשׁ אובייקטים כל שעלינו לעשות הוא להאריך את מאגר Crud מִמְשָׁק:

ממשק ציבורי @ מאגר @ UserRepository מרחיב את CrudRepository {}

וזה הכל! רק על ידי הרחבת ה- מאגר Crud ממשק, Spring Data JPA יספק עבורנו יישומים עבור שיטות ה- CRUD של המאגר.

5. שכבת הבקר

בזכות שכבת ההפשטה ש spring-boot-starter-data-jpa במקומות הראשונים של יישום ה- JPA הבסיסי, אנו יכולים להוסיף בקלות פונקציונליות CRUD ליישום האינטרנט שלנו באמצעות שכבת בסיס בסיסית.

במקרה שלנו, מחלקת בקר אחת תספיק לטיפול בבקשות GET ו- POST HTTP ואז למפות אותן לשיחות אל שלנו UserRepository יישום.

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

נתחיל עם הבקר showSignUpForm () ו הוסף משתמש() שיטות.

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

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

@Controller מחלקה ציבורית UserController {@GetMapping ("/ הרשמה") ציבורי מחרוזת showSignUpForm (משתמש משתמש) {להחזיר "תוסף משתמש"; } @PostMapping ("/ adduser") ציבורי מחרוזת addUser (משתמש משתמש @Valid, תוצאת BindingResult, מודל מודל) {if (result.hasErrors ()) {להחזיר "add-user"; } userRepository.save (user); להחזיר "redirect: / index"; } // שיטות CRUD נוספות}

נצטרך גם מיפוי עבור ה- /אינדקס כתובת אתר:

@GetMapping ("/ index") ציבורי מחרוזת showUserList (מודל מודל) {model.addAttribute ("משתמשים", userRepository.findAll ()); להחזיר "אינדקס"; }

בתוך ה UserController יהיה לנו גם את showUpdateForm () שיטה אשר אחראית להביא את מִשׁתַמֵשׁ ישות שתואמת את המסופק תְעוּדַת זֶהוּת ממאגר המידע.

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

@GetMapping ("/ עריכה / {id}") ציבורי מחרוזת showUpdateForm (@PathVariable ("id") מזהה ארוך, דגם מודל) {משתמש משתמש = userRepository.findById (id) .orElseThrow (() -> IllegalArgumentException (" מזהה משתמש לא חוקי: "+ id)); model.addAttribute ("משתמש", משתמש); להחזיר "משתמש עדכון"; } 

לבסוף, יש לנו את updateUser () ו מחק משתמש() שיטות בתוך UserController מעמד.

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

בשני המקרים, רשימת הגופים המתמידים תתעדכן בהתאם:

@PostMapping ("/ update / {id}") public String updateUser (@PathVariable ("id") מזהה ארוך, משתמש משתמש @Valid, תוצאת BindingResult, מודל מודל) {if (result.hasErrors ()) {user.setId (תְעוּדַת זֶהוּת); להחזיר "משתמש עדכון"; } userRepository.save (user); להחזיר "redirect: / index"; } @GetMapping ("/ delete / {id}") ציבורי deleteUser (@PathVariable ("id") מזהה ארוך, דגם מודל) {משתמש משתמש = userRepository.findById (id) .orElseThrow (() -> IllegalArgumentException ( "מזהה משתמש לא חוקי:" + מזהה)); userRepository.delete (משתמש); להחזיר "redirect: / index"; }

6. שכבת התצוגה

בשלב זה יישמנו מחלקת בקר פונקציונלית המבצעת פעולות CRUD מִשׁתַמֵשׁ ישויות. למרות זאת, בסכמה זו עדיין חסר רכיב: שכבת התצוגה.

תחת src / main / resources / templates התיקייה הדרושה לנו כדי ליצור את תבניות ה- HTML הנדרשות להצגת טופס ההרשמה, טופס העדכון, ועיבוד רשימת המשימות מִשׁתַמֵשׁ ישויות,

כאמור בהקדמה, נשתמש ב- Thymeleaf כמנוע התבנית הבסיסי לניתוח קבצי התבנית.

להלן החלק הרלוונטי של add-user.html קוֹבֶץ:

 שם דוא"ל 

שימו לב כיצד השתמשנו ב- @{/הוסף משתמש} ביטוי של כתובת אתר כדי לציין את הטופס פעולה תכונה ו ${} ביטויים משתנים להטמעת תוכן דינמי בתבנית, כגון ערכי ה- שֵׁם ו אימייל שדות ושגיאות לאחר אימות.

דומה ל add-user.html, הנה איך update-user.html מראה תבנית:

 שם דוא"ל 

לבסוף, יש לנו את index.html קובץ המציג את רשימת הישויות הקבועות יחד עם הקישורים לעריכה והסרה של קיימים:

עדיין אין משתמשים!

משתמשים

שֵׁםאימייללַעֲרוֹךלִמְחוֹק
לַעֲרוֹךלִמְחוֹק

הוסף משתמש חדש

למען הפשטות, התבניות נראות די שלדיות ומספקות רק את הפונקציונליות הנדרשת מבלי להוסיף קוסמטיקה מיותרת.

כדי לתת לתבניות מראה משופר ומושך את העין מבלי להשקיע יותר מדי זמן ב- HTML / CSS נוכל להשתמש בערכת ממשק משתמש ממשק משתמש של Twitter Bootstrap בחינם, כמו Shards.

7. הפעלת האפליקציה

לסיום, בואו נגדיר את נקודת הכניסה של היישום. כמו רוב יישומי אתחול האביב, אנו יכולים לעשות זאת עם ישן רגיל רָאשִׁי() שיטה:

@SpringBootApplication מחלקה ציבורית יישום {public static void main (String [] args) {SpringApplication.run (Application.class, args); }}

עכשיו, בואו נלחץ על "הפעל" ב- IDE שלנו, ואז נפתח את הדפדפן ונצביע אליו // localhost: 8080.

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

8. מסקנה

במדריך זה למדנו כיצד לבנות אפליקציית CRUD בסיסית עם Spring Boot ו- Thymeleaf.

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


$config[zx-auto] not found$config[zx-overlay] not found