מבוא לגביעים 3 ו- GORM

עליון התמדה

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס

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

זהו מבוא מהיר ל- Grails 3 ו- GORM.

אנו כמובן נשתמש ב- Groovy ובמשתמע - המסגרת עושה שימוש גם ב- Hibernate עבור ORM, מסגרת האביב להזרקת תלות, SiteMash לפריסה ולנושאים וכו '.

2. תצורת DataSource

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

אך אם ברצונך לשנות ברירות מחדל אלה, תוכל להגדיר את מקור הנתונים שבחרת ב- application.yml:

סביבות: פיתוח: נתונים מקור: driverClassName: "com.mysql.jdbc.Driver" url: "jdbc: mysql: // localhost: 8080 / test" ניב: org.hibernate.dialect.MySQL5InnoDBDialect 

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

3. תחום

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

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

משתמש מחלקה {מחרוזת משתמש שם סיסמת מחרוזת מייל מחרוזת אילוצים סטטיים בגיל מחרוזת = {userName ריק: שקר, ייחודי: גודל סיסמה אמיתי: 5..10, ריק: כתובת דוא"ל כוזבת: נכון, ריק: נכון}}

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

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

אנו יכולים גם לציין מיפויי GORM ב מיפוי המאפיין של המודל:

מיפוי סטטי = {sort "userName"}

עכשיו אם אנחנו מתקשרים רשימת משתמש() - אנו נחזיר תוצאות ממוינים לפי שם משתמש.

נוכל כמובן להשיג את אותה התוצאה על ידי העברת המיון ל- API של הרשימה:

User.list (מיין: "userName")

4. פעולות CRUD

כשאנחנו מסתכלים על פעולות API, פיגומים ממלא תפקיד מעניין מאוד בהתחלה; זה מאפשר לך ליצור בסיסי ל- CRUD API למחלקת תחום, כולל:

  • הדעות הנחוצות
  • פעולות בקר לפעולות ה- CRUD הסטנדרטיות
  • שני סוגים: דינמי וסטטי

כך זה עובד עם פיגומים דינמיים:

מחלקה UserController {פיגום סטטי = נכון}

רק על ידי כתיבת שורה אחת זו, המסגרת תייצר 7 שיטות בזמן הריצה: להציג, לערוך, למחוק, ליצור, לשמור ולעדכן. אלה יפורסמו כ- API עבור אותה ישות תחום מסוימת.

דוגמה לפיגומים סטטיים:

  • ליצירת תצוגה באמצעות פיגומים השתמשו: “הגריסים יוצרים תצוגות משתמש
  • ליצירת הבקר והצגה באמצעות פיגומים השתמשו: “משתמש הגורם לבקר
  • כדי ליצור הכל בפקודה אחת, השתמש ב: "משתמש הגביעים

פקודות אלה ייצרו אוטומטית את הצנרת הדרושה לאובייקט התחום המסוים הזה.

בואו נסתכל מהר מאוד על השימוש בפעולות אלה - למשל עבור שלנו מִשׁתַמֵשׁ אובייקט תחום.

ל ליצור רשומת "משתמש" חדשה:

def user = משתמש חדש (שם משתמש: "test", סיסמה: "test123", דוא"ל: "[email protected]", גיל: 14) user.save ()

ל להביא תקליט יחיד:

def user = User.get (1) 

זֶה לקבל API יאחזר את אובייקט התחום במצב הניתן לעריכה. למצב קריאה בלבד נוכל להשתמש ב- לקרוא ממשק API:

משתמש def = User.read (1)

ל לעדכן את הרשומה הקיימת:

def user = User.get (1) user.userName = "testUpdate" user.age = 20 user.save () 

ופעולת מחיקה פשוטה עבור רשומה קיימת:

def user = User.get (1) user.delete ()

5. שאילתות GORM

5.1. למצוא

נתחיל עם ה- למצוא ממשק API:

def user = User.find ("מהמשתמש כ u שבו u.username = 'test'")

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

def user = User.find ("מהמשתמש כשאתה שם u.username?", ['test'])

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

def user = User.find ("מהמשתמש כשם u.username =?", [שם משתמש: 'test'])

5.2. findBy

Grails מספק מתקן איתור דינמי המשתמש בתכונות דומיין כדי לבצע שאילתה בזמן הריצה ולהחזיר את רשומת ההתאמה הראשונה:

def user = User.findByUsername ("test") user = User.findByUsernameAndAge ("test", 20) user = User.findByUsernameLike ("tes") user = User.findByUsernameAndAgeNotEquals ("מבחן", "100")

תוכלו למצוא ביטויים נוספים כאן.

5.3. קריטריונים

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

def user = User.find {username == "test"} def user = User.createCriteria () def results = user.list {like ("userName", "te%") ו- {between ("age", 10, 20)} סדר ("userName", "desc")}

הערה מהירה כאן - בעת שימוש בשאילתת קריטריונים, השתמש ב- "{}" במקום "()".

5.4. ביצוע שאילתה / עדכון

GORM תומך גם בתחביר שאילתת HQL - לפעולות קריאה:

def user = User.executeQuery ("בחר u.userName מהמשתמש u שבו u.userName =?", ['test'])

כמו גם פעולות כתיבה:

def user = User.executeUpdate ("מחק משתמש u שם u.username =?", ['test'])

6. מסקנה

זה היה מבוא מהיר מאוד ל- Grails ו- GORM - שישמש כמדריך להתחלה עם המסגרת.

תחתית התמדה

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס

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