MyBatis עם האביב

עליון התמדה

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

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

1. הקדמה

MyBatis היא אחת ממסגרות הקוד הפתוח הנפוצות ביותר ליישום גישה למסדי נתונים של SQL ביישומי Java.

במדריך מהיר זה נציג כיצד לשלב את MyBatis עם Spring and Spring Boot.

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

2. הגדרת המודל

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

מאמר בכיתה ציבורית {פרטי מזהה ארוך; כותרת מחרוזת פרטית; סופר מחרוזת פרטי; // קונסטרוקטור, סטרים סטרים וקובעים}

ו- SQL שווה ערך schema.sql קוֹבֶץ:

צור טבלה אם לא קיים 'מאמרים' ('id' מפתח מפתח ראשוני, 'כותרת' VARCHAR (100) NOT NULL, 'author' VARCHAR (100) NOT NULL);

לאחר מכן, בואו ליצור a data.sql הקובץ, שמכניס פשוט רשומה אחת לקובץ שלנו מאמרים שולחן:

הכנס לערכי מאמרים (1, 'עבודה עם MyBatis באביב', 'באלדונג');

יש לכלול את שני קבצי ה- SQL בנתיב הכיתה.

3. תצורת האביב

כדי להתחיל להשתמש ב- MyBatis, עלינו לכלול שתי תלות עיקריות - MyBatis ו- MyBatis-Spring:

 org.mybatis mybatis 3.5.2 org.mybatis mybatis-spring 2.0.2 

מלבד זאת, נצטרך תלות בסיסית באביב:

 org.springframework spring-context 5.1.8.RELEASE org.springframework spring-שעועית 5.1.8.RELEASE 

בדוגמאות שלנו נשתמש במסד הנתונים המשובץ H2 כדי לפשט את ההתקנה ואת EmbeddedDatabaseBuilder כיתה מה אביב-jdbc מודול לתצורה:

 com.h2database h2 1.4.199 org.springframework spring-jdbc 5.1.8.RELEASE 

3.1. תצורה מבוססת ביאור

אביב מפשט את התצורה עבור MyBatis. האלמנטים הנדרשים היחידים הם javax.sql.Datasource, org.apache.ibatis.session.SqlSessionFactoryולפחות מיפוי אחד.

ראשית, בואו ניצור מחלקת תצורה:

@Configuration @MapperScan ("com.baeldung.mybatis") מחלקה ציבורית PersistenceConfig {@Bean DataSource publicSource () {להחזיר EmbeddedDatabaseBuilder חדש () .setType (EmbeddedDatabaseType.H2) .addScript ("schema.sql") .addScript (" data.sql ") .build (); } @Bean הציבור SqlSessionFactory sqlSessionFactory () זורק חריג {SqlSessionFactoryBean factoryBean = חדש SqlSessionFactoryBean (); factoryBean.setDataSource (dataSource ()); החזר factoryBean.getObject (); }}

יישמנו גם א @MapperScan ביאור מ- MyBatis-Spring הסורק חבילות מוגדרות ומרים ממשקים באופן אוטומטי באמצעות כל אחת מההערות הממפות, כגון @בחר אוֹ @לִמְחוֹק.

באמצעות @MapperScan גם מבטיח שכל מיפוי מסופק נרשם אוטומטית כשעועית וניתן יהיה להשתמש בו מאוחר יותר עם ה- @Autowired ביאור.

כעת אנו יכולים ליצור פשוט ArticleMapper מִמְשָׁק:

ממשק ציבורי ArticleMapper {@Select ("בחר * מתוך מאמרים איפה id = # {id}") מאמר getArticle (@Param ("id") מזהה ארוך); }

ולסיום, בדקו את ההתקנה שלנו:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (classes = PersistenceConfig.class) class public ArticleMapperIntegrationTest {@Autowired ArticleMapper articleMapper; @Test הציבור בטל כאשרRecordsInDatabase_shouldReturnArticleWithGivenId () {Article Article = articleMapper.getArticle (1L); assertThat (מאמר) .isNotNull (); assertThat (article.getId ()). isEqualTo (1L); assertThat (article.getAuthor ()). isEqualTo ("Baeldung"); assertThat (article.getTitle ()). isEqualTo ("עבודה עם MyBatis באביב"); }}

בדוגמה שלעיל השתמשנו ב- MyBatis כדי לאחזר את הרשומה היחידה שהכנסנו בעבר ל data.sql קוֹבֶץ.

3.2. תצורה מבוססת XML

כפי שתואר לעיל, כדי להשתמש ב- MyBatis עם Spring, אנו זקוקים מקור מידע, SqlSessionFactoryולפחות מיפוי אחד.

בואו ניצור את הגדרות השעועית הנדרשות ב שעועית.קסמל קובץ תצורה:

בדוגמה זו, השתמשנו גם בסכמת ה- XML ​​המותאמת אישית שמספקת אביב-jdbc להגדרת תצורת מקור הנתונים H2.

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

@ContextConfiguration (locations = "classpath: /beans.xml")

4. מגף אביב

Spring Boot מספק מנגנונים שמפשטים את תצורת MyBatis עם Spring עוד יותר.

ראשית, בואו נוסיף את mybatis-spring-boot-starter תלות שלנו pom.xml:

 org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.0 

כברירת מחדל, אם אנו משתמשים בתכונה לתצורה אוטומטית, Spring Boot מזהה את התלות H2 משביל הכיתה שלנו ומגדיר את שניהם מקור מידע ו SqlSessionFactory בשבילנו. בנוסף, הוא גם מבצע את שניהם schema.sql ו data.sql בהפעלה.

אם איננו משתמשים במסד נתונים משובץ, אנו יכולים להשתמש בתצורה באמצעות application.yml אוֹ application.properties קובץ או הגדר א מקור מידע שעועית המצביעה על בסיס הנתונים שלנו.

הדבר היחיד שנותר לנו לעשות הוא להגדיר ממשק מיפוי, באותו אופן כמו קודם, ולהביא לו הערה באמצעות @Mapper ביאור מ- MyBatis. כתוצאה מכך, Spring Boot סורק את הפרויקט שלנו, מחפש את ההערה הזו, ורושם את המפות שלנו כשעועית.

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

@RunWith (SpringRunner.class) @ SpringBootTest

5. מסקנה

במאמר זה בחנו דרכים מרובות להגדרת תצורת MyBatis עם Spring.

בדקנו דוגמאות לשימוש בהערות מבוססות תצורה ו- XML ​​והראינו את תכונות התצורה האוטומטית של MyBatis עם Spring Boot.

כמו תמיד, הקוד השלם המשמש במאמר זה זמין באתר GitHub.

תחתית התמדה

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

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