MyBatis s proljećem

Vrh postojanosti

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ

1. Uvod

MyBatis je jedan od najčešće korištenih okvira otvorenog koda za implementaciju pristupa SQL bazama podataka u Java programe.

U ovom brzom vodiču predstavit ćemo kako integrirati MyBatis s Spring i Spring Boot.

Za one koji još nisu upoznati s ovim okvirom, svakako pogledajte naš članak o radu s MyBatisom.

2. Definiranje modela

Počnimo s definiranjem jednostavnog POJO-a koji ćemo koristiti u cijelom našem članku:

članak javne klase {private Long id; privatni naslov niza; privatni autor niza; // konstruktor, standardni getteri i postavljači}

I ekvivalentni SQL shema.sql datoteka:

IZRADI TABELU AKO NE POSTOJI `ARTICLES` (` id` PRIMARNI KLJUČ INTEGER, `title` VARCHAR (100) NOT NULL,` autor` VARCHAR (100) NOT NULL);

Dalje, izradimo a podaci.sql datoteku koja jednostavno ubacuje jedan zapis u naš članaka stol:

Umetnite u vrijednosti članaka (1, 'Rad s MyBatisom u proljeće', 'Baeldung');

Obje SQL datoteke moraju biti uključene u put predavanja.

3. Proljetna konfiguracija

Da bismo počeli koristiti MyBatis, moramo uključiti dvije glavne ovisnosti - MyBatis i MyBatis-Spring:

 org.mybatis mybatis 3.5.2 org.mybatis mybatis-proljeće 2.0.2 

Osim toga, trebat će nam osnovne proljetne ovisnosti:

 org.springframework proljeće-kontekst 5.1.8.Opusti org.springframework proljeće-grah 5.1.8.Opusti 

U našim primjerima koristit ćemo ugrađenu bazu podataka H2 za pojednostavljenje postavljanja i EmbeddedDatabaseBuilder razred iz proljeće-jdbc modul za konfiguraciju:

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

3.1. Konfiguracija temeljena na bilješkama

Proljeće pojednostavljuje konfiguraciju za MyBatis. Jedini potrebni elementi su javax.sql.Datasource, org.apache.ibatis.session.SqlSessionFactory, i barem jedan mapper.

Prvo, kreirajmo klasu konfiguracije:

@Configuration @MapperScan ("com.baeldung.mybatis") javna klasa PersistenceConfig {@Bean public DataSource dataSource () {return new EmbeddedDatabaseBuilder () .setType (EmbeddedDatabaseType.H2) .addScript ("schema.sql"). data.sql ") .build (); } @Bean public SqlSessionFactory sqlSessionFactory () baca izuzetak {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean (); factoryBean.setDataSource (dataSource ()); vratiti factoryBean.getObject (); }}

Također smo primijenili a @MapperScan napomena iz MyBatis-Spring koja skenira definirane pakete i automatski preuzima sučelja pomoću bilo koje bilješke mappera, kao što je @Odaberi ili @Izbrisati.

Koristeći @MapperScan također osigurava da se svaki osigurani mapper automatski registrira kao Bean i da se kasnije može koristiti s @Autowired bilješka.

Sada možemo stvoriti jednostavan ArticleMapper sučelje:

javno sučelje ArticleMapper {@Select ("SELECT * FROM ARTICLES WHERE id = # {id}") Article getArticle (@Param ("id") Long id); }

I na kraju, testirajte našu postavku:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (classes = PersistenceConfig.class) javna klasa ArticleMapperIntegrationTest {@Autowired ArticleMapper articleMapper; @Test javna void whenRecordsInDatabase_shouldReturnArticleWithGivenId () {Article article = articleMapper.getArticle (1L); assertThat (članak) .isNotNull (); assertThat (article.getId ()). isEqualTo (1L); assertThat (article.getAuthor ()). isEqualTo ("Baeldung"); assertThat (article.getTitle ()). isEqualTo ("Rad s MyBatisom u proljeće"); }}

U gornjem primjeru koristili smo MyBatis da dohvatimo jedini zapis koji smo prethodno umetnuli u naš podaci.sql datoteka.

3.2. Konfiguracija temeljena na XML-u

Kao što je prethodno opisano, da bismo koristili MyBatis s Springom, trebamo Izvor podataka, SqlSessionFactory, i barem jedan mapper.

Stvorimo potrebne definicije graha u grah.xml konfiguracijska datoteka:

U ovom smo primjeru također koristili prilagođenu XML shemu koju pruža proljeće-jdbc za konfiguriranje našeg izvora podataka H2.

Da bismo testirali ovu konfiguraciju, možemo ponovno upotrijebiti prethodno implementiranu testnu klasu. Međutim, moramo prilagoditi konfiguraciju konteksta, što možemo učiniti primjenom bilješke:

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

4. Proljetni čizma

Spring Boot pruža mehanizme koji još više pojednostavljuju konfiguraciju MyBatis-a s Springom.

Prvo, dodajmo mybatis-spring-boot-starter ovisnost o našoj pom.xml:

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

Prema zadanim postavkama, ako koristimo značajku automatske konfiguracije, Spring Boot otkriva ovisnost H2 s naše staze i konfigurira oboje Izvor podataka i SqlSessionFactory za nas. Uz to izvršava i jedno i drugo shema.sql i podaci.sql Na početku.

Ako ne koristimo ugrađenu bazu podataka, možemo koristiti konfiguraciju putem primjena.iml ili primjena.svojstva datoteku ili definirajte Izvor podataka grah koji upućuje na našu bazu podataka.

Jedino što nam preostaje jest definirati sučelje mapiranja, na isti način kao i prije, i označiti ga s @Mapper napomena od MyBatis. Kao rezultat toga, Spring Boot skenira naš projekt, tražeći tu napomenu i registrira naše mapiranje kao grah.

Nakon toga možemo testirati našu konfiguraciju pomoću prethodno definirane klase testa primjenom bilješki iz proljetni-boot-starter-test:

@RunWith (SpringRunner.class) @SpringBootTest

5. Zaključak

U ovom smo članku istražili više načina konfiguriranja MyBatis-a s Springom.

Pregledali smo primjere korištenja napomena i XML konfiguracije te pokazali značajke automatske konfiguracije MyBatis s Spring Boot.

Kao i uvijek, cjeloviti kôd korišten u ovom članku dostupan je na GitHubu.

Dno postojanosti

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ