MyBatis med våren

Utholdenhetstopp

Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:

>> KONTROLLER KURSET

1. Introduksjon

MyBatis er en av de mest brukte open source-rammene for implementering av tilgang til SQL-databaser i Java-applikasjoner.

I denne raske opplæringen vil vi presentere hvordan du integrerer MyBatis med Spring og Spring Boot.

For de som ennå ikke er kjent med dette rammeverket, må du sjekke ut artikkelen vår om å jobbe med MyBatis.

2. Definere modellen

La oss starte med å definere enkel POJO som vi vil bruke gjennom hele artikkelen vår:

offentlig klasse Artikkel {privat Lang id; privat strengetittel; privat strengforfatter; // constructor, standard getters and setters}

Og en tilsvarende SQL schema.sql fil:

OPPRETT TABELL HVIS IKKE BESTÅER `ARTIKLER '(' id 'INTEGER PRIMÆRNØkkel,` tittel` VARCHAR (100) NOT NULL, `author` VARCHAR (100) NOT NULL);

La oss deretter lage en data.sql fil, som ganske enkelt setter inn en post i vår artikler bord:

INSERT I ARTIKELVERDIER (1, 'Arbeide med MyBatis om våren', 'Baeldung');

Begge SQL-filene må inkluderes i klassestien.

3. Vårkonfig

For å begynne å bruke MyBatis, må vi ta med to hovedavhengigheter - MyBatis og MyBatis-Spring:

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

Bortsett fra det, trenger vi grunnleggende våravhengigheter:

 org.springframework spring-context 5.1.8.RELEASE org.springframework spring-beans 5.1.8.RELEASE 

I eksemplene våre bruker vi den innebygde H2-databasen for å forenkle oppsettet og EmbeddedDatabaseBuilder klasse fra vår-jdbc modul for konfigurasjon:

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

3.1. Kommentarbasert konfigurasjon

Våren forenkler konfigurasjonen for MyBatis. De eneste nødvendige elementene er javax.sql.Datasource, org.apache.ibatis.session.SqlSessionFactory, og minst en kartlegger.

La oss først lage en konfigurasjonsklasse:

@Configuration @MapperScan ("com.baeldung.mybatis") offentlig klasse PersistenceConfig {@Bean public DataSource dataSource () {return new EmbeddedDatabaseBuilder () .setType (EmbeddedDatabaseType.H2) .addScript ("schema.sql") .addScript (" data.sql ") .build (); } @Bean public SqlSessionFactory sqlSessionFactory () kaster unntak {SqlSessionFactoryBean factoryBean = ny SqlSessionFactoryBean (); factoryBean.setDataSource (dataSource ()); returner factoryBean.getObject (); }}

Vi brukte også en @MapperScan kommentar fra MyBatis-Spring som skanner definerte pakker og automatisk plukker opp grensesnitt ved hjelp av noen av kartleggingsnotatene, for eksempel @Å velge eller @Delete.

Ved hjelp av @MapperScan sørger også for at hver gitt kartlegger automatisk blir registrert som en bønne og senere kan brukes med @Autowired kommentar.

Vi kan nå lage en enkel ArticleMapper grensesnitt:

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

Og til slutt, test vårt oppsett:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (klasser = PersistenceConfig.class) offentlig klasse ArticleMapperIntegrationTest {@Autowired ArticleMapper ArticleMapper; @Test offentlig ugyldig nårRecordsInDatabase_shouldReturnArticleWithGivenId () {Article article = articleMapper.getArticle (1L); assertThat (artikkel) .isNotNull (); assertThat (article.getId ()). er EqualTo (1L); assertThat (article.getAuthor ()). er EqualTo ("Baeldung"); assertThat (article.getTitle ()). isEqualTo ("Arbeide med MyBatis om våren"); }}

I eksemplet ovenfor har vi brukt MyBatis til å hente den eneste posten vi satte inn tidligere i vår data.sql fil.

3.2. XML-basert konfigurasjon

Som tidligere beskrevet trenger vi å bruke MyBatis med Spring Datakilde, SqlSessionFactory, og minst en kartlegger.

La oss lage de nødvendige bønnedefinisjonene i bønner.xml konfigurasjonsfil:

I dette eksemplet brukte vi også det tilpassede XML-skjemaet som ble gitt av vår-jdbc for å konfigurere vår H2-datakilde.

For å teste denne konfigurasjonen kan vi bruke den tidligere implementerte testklassen på nytt. Vi må imidlertid justere kontekstkonfigurasjonen, noe vi kan gjøre ved å bruke kommentaren:

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

4. Vårstøvel

Spring Boot gir mekanismer som forenkler konfigurasjonen av MyBatis med Spring enda mer.

La oss først legge til mybatis-spring-boot-starter avhengighet til vår pom.xml:

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

Som standard, hvis vi bruker en automatisk konfigurasjonsfunksjon, Spring Boot oppdager H2-avhengigheten fra klassestien vår og konfigurerer begge deler Datakilde og SqlSessionFactory for oss. I tillegg utfører den også begge deler schema.sql og data.sql ved oppstart.

Hvis vi ikke bruker en innebygd database, kan vi bruke konfigurasjon via en application.yml eller application.properties fil eller definere en Datakilde bønne som peker til databasen vår.

Det eneste vi har igjen å gjøre er å definere et kartleggergrensesnitt, på samme måte som før, og kommentere det med @Kartlegger kommentar fra MyBatis. Som et resultat skanner Spring Boot prosjektet vårt, på jakt etter den merknaden, og registrerer kartleggere som bønner.

Etter det kan vi teste konfigurasjonen vår ved hjelp av den tidligere definerte testklassen ved å bruke kommentarer fra vår-støvel-start-test:

@RunWith (SpringRunner.class) @SpringBootTest

5. Konklusjon

I denne artikkelen undersøkte vi flere måter å konfigurere MyBatis med våren på.

Vi så på eksempler på bruk av merknadsbasert og XML-konfigurasjon og viste de automatiske konfigurasjonsfunksjonene til MyBatis med Spring Boot.

Som alltid er den komplette koden som brukes i denne artikkelen tilgjengelig på GitHub.

Persistensbunn

Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:

>> KONTROLLER KURSET

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