MyBatis s jarou

Perzistencia hore

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

1. Úvod

MyBatis je jedným z najbežnejšie používaných open-source rámcov na implementáciu prístupu k databázam SQL v aplikáciách Java.

V tomto rýchlom výučbe vám predstavíme, ako integrovať MyBatis do jarných a jarných zavádzaní.

Pre tých, ktorí ešte tento rámec nepoznajú, prečítajte si náš článok o práci s MyBatis.

2. Definovanie modelu

Začnime definovaním jednoduchého POJO, ktoré použijeme v celom našom článku:

public class Article {private Long id; súkromný názov reťazca; súkromný autor reťazcov; // konštruktor, štandardné getre a setre}

A ekvivalentný SQL schema.sql spis:

VYTVORIŤ TABUĽKU, AK NEEXISTUJE `ČLÁNKY '(` id` INTEGER PRIMARY KEY, `title` VARCHAR (100) NOT NULL,` autor` VARCHAR (100) NOT NULL);

Ďalej vytvoríme a data.sql súbor, ktorý jednoducho vloží jeden záznam do nášho článkov tabuľka:

VLOŽTE DO HODNOTY ČLÁNKOV (1, „Práca s MyBatis na jar“, „Baeldung“);

Do cesty triedy musia byť zahrnuté oba súbory SQL.

3. Jarná konfigurácia

Aby sme mohli začať používať MyBatis, musíme zahrnúť dve hlavné závislosti - MyBatis a MyBatis-Spring:

 org.mybatis mybatis 3.5.2 org.mybatis mybatis-jar 2.0.2 

Okrem toho budeme potrebovať základné jarné závislosti:

 org.springframework jarný kontext 5.1.8.RELEASE org.springframework jarné fazule 5.1.8.RELEASE 

V našich príkladoch použijeme zabudovanú databázu H2 na zjednodušenie nastavenia a EmbeddedDatabaseBuilder triedy z jar-jdbc modul pre konfiguráciu:

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

3.1. Konfigurácia založená na anotáciách

Jar zjednodušuje konfiguráciu MyBatis. Jediné požadované prvky sú javax.sql.Datasource, org.apache.ibatis.session.SqlSessionFactorya aspoň jeden mapovač.

Najskôr vytvorme konfiguračnú triedu:

@Configuration @MapperScan ("com.baeldung.mybatis") verejná trieda PersistenceConfig {@Bean public DataSource dataSource () {return new EmbeddedDatabaseBuilder () .setType (EmbeddedDatabaseType.H2) .addScript ("schema.sql") .addScript ( data.sql ") .build (); } @Bean public SqlSessionFactory sqlSessionFactory () vyvolá výnimku {SqlSessionFactoryBean factoryBean = nový SqlSessionFactoryBean (); factoryBean.setDataSource (dataSource ()); vrátiť factoryBean.getObject (); }}

Aplikovali sme aj a @MapperScan anotácia z MyBatis-Spring, ktorá skenuje definované balíčky a automaticky sníma rozhrania pomocou ktorejkoľvek z anotácií mapovača, ako napr. @Vybrať alebo @ Odstrániť.

Použitím @MapperScan tiež zaisťuje, že každý poskytnutý mapovač je automaticky zaregistrovaný ako Bean a môže byť neskôr použitý s @Autowired anotácia.

Teraz môžeme vytvoriť jednoduchý ArticleMapper rozhranie:

verejné rozhranie ArticleMapper {@Select ("SELECT * FROM ARTICLES WHERE id = # {id}") Article getArticle (@Param ("id") Long id); }

A nakoniec otestujte naše nastavenie:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (classes = PersistenceConfig.class) verejná trieda ArticleMapperIntegrationTest {@Autowired ArticleMapper articleMapper; @Test public void whenRecordsInDatabase_shouldReturnArticleWithGivenId () {Article article = articleMapper.getArticle (1L); assertThat (článok) .isNotNull (); assertThat (article.getId ()). isEqualTo (1L); assertThat (article.getAuthor ()). isEqualTo ("Baeldung"); assertThat (article.getTitle ()). isEqualTo ("Práca s MyBatis na jar"); }}

Vo vyššie uvedenom príklade sme použili MyBatis na získanie jediného záznamu, ktorý sme predtým vložili do nášho data.sql spis.

3.2. Konfigurácia založená na XML

Ako už bolo popísané, na používanie MyBatis s jarom potrebujeme Dátový zdroj, SqlSessionFactory, a aspoň jeden mapovač.

Vytvorme požadované definície fazule v beans.xml konfiguračný súbor:

V tomto príklade sme použili aj vlastnú schému XML poskytovanú serverom jar-jdbc nakonfigurovať náš zdroj údajov H2.

Na otestovanie tejto konfigurácie môžeme znovu použiť predtým implementovanú testovaciu triedu. Musíme však upraviť konfiguráciu kontextu, čo môžeme urobiť použitím anotácie:

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

4. Jarná topánka

Spring Boot poskytuje mechanizmy, ktoré ešte viac zjednodušujú konfiguráciu MyBatis s Spring.

Najskôr pridajme štartér mybatis-spring-boot-start závislosť na našom pom.xml:

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

Ak predvolene používame funkciu automatickej konfigurácie, Spring Boot detekuje závislosť H2 z našej triedy a konfiguruje obe Dátový zdroj a SqlSessionFactory pre nás. Okrem toho vykonáva aj oboje schema.sql a data.sql na začiatku.

Pokiaľ nepoužívame vloženú databázu, môžeme použiť konfiguráciu pomocou aplikácia.yml alebo application.properties súbor alebo definovať a Dátový zdroj fazuľa smerujúca do našej databázy.

Jediná vec, ktorú nám zostáva, je definovať rozhranie mapovača rovnakým spôsobom ako predtým a anotovať ho pomocou @Mapper anotácia z MyBatis. Výsledkom je, že Spring Boot naskenuje náš projekt, hľadá túto anotáciu a zaregistruje našich mapovačov ako fazuľa.

Potom môžeme našu konfiguráciu otestovať pomocou predtým definovanej testovacej triedy použitím anotácií z test štartovacej pružiny:

@RunWith (SpringRunner.class) @SpringBootTest

5. Záver

V tomto článku sme preskúmali niekoľko spôsobov konfigurácie MyBatis s Spring.

Pozreli sme sa na príklady použitia konfigurácie založenej na anotáciách a XML a ukázali sme funkcie automatickej konfigurácie MyBatis s Spring Boot.

Úplný kód použitý v tomto článku je ako vždy k dispozícii na stránkach GitHub.

Perzistencia dno

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

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