Wir haben die am 10. April 2017 veröffentlichten 1.3 Änderungen zusammengefasst.
Darüber hinaus sollte beachtet werden
Bitte sehen Sie.
Note: ** 21.08.2017: Nachtrag ** Änderungen in Version 1.3.1 hinzugefügt. ** 07.09.2019: Nachtrag ** Die Änderungen in den Versionen 1.3.2, 1.3.3 und 1.3.4 wurden berücksichtigt.
Zur Verwendung von Version 1.3 sind die folgenden Versionen erforderlich.
Ab Version 1.3 wurde die Annotation "@ MybatisTest" hinzugefügt, die die Bean-Definition unterstützt, die zum Testen der Funktionalität von MyBatis erforderlich ist. Diese Annotation hängt von der von Spring Boot 1.5 unterstützten API ab, also Spring Boot 1.5+ Wird benötigt. Wenn Sie den mybatis-spring-boot-Starter mit der Spring Boot 1.4-Serie verwenden möchten, verwenden Sie bitte die Version 1.2-Serie.
In Version 1.3 wurden die folgenden Bibliotheksversionen aktualisiert.
Bibliotheksname | 1.2.Version von 0 | 1.3.Version von 0 | 1.3.1 Version | 1.3.2 Versionen | 1.3.Version von 3 | 1.3.Version von 4 |
---|---|---|---|---|---|---|
MyBatis | 3.4.2 | 3.4.4 | 3.4.5 | 3.4.6 | 3.4.6 | 3.4.6 |
MyBatis Spring | 1.3.1 | 1.3.1 | 1.3.1 | 1.3.2 | 1.3.2 | 1.3.2 |
Spring Boot | 1.4.3.RELEASE | 1.5.2.RELEASE | 1.5.6.RELEASE | 1.5.10.RELEASE | 1.5.19.RELEASE | 1.5.20.RELEASE |
Note: Im Vergleich zu Version 1.2.1, die gleichzeitig mit Version 1.3.0 veröffentlicht wurde, wurde nur die Version von Spring Boot aktualisiert (1.4.5.RELEASE-> 1.5.2.RELEASE).
Eine Rückrufschnittstelle (org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer
) zum Anpassen der Bean ( org.apache.ibatis.session.Configuration
Bean), die MyBatis-Konfigurationsinformationen mit Java-Code enthält. ) Wurde hinzugefügt. Wenn Sie eine Bean definieren, die diese Schnittstelle wie unten gezeigt implementiert, wird die Methode "configure" von "ConfigurationCustomizer" zurückgerufen, und Sie können Java-Code verwenden, um die Konfiguration von MyBayis abzuschließen. Kann angepasst werden an.
Bean-Definitionsbeispiel für ConfigurationCustomizer mit Lambda-Ausdruck
@Configuration
public class MyBatisConfiguration {
@Bean
ConfigurationCustomizer mybatisConfigurationCustomizer() {
return (configuration) -> {
// aplication.Implementierter Anpassungscode, der nicht durch Eigenschaften angegeben / ausgedrückt werden kann
configuration.getTypeHandlerRegistry().register(RoundingMode.class, EnumOrdinalTypeHandler.class);
};
}
}
Note:
Die "ConfigurationCustomizer" -Schnittstelle wird ebenfalls auf Version 1.2.1 zurückportiert, die gleichzeitig mit Version 1.3.0 veröffentlicht wurde.
Ab Version 1.3 wurde die Annotation "@ MybatisTest" hinzugefügt, um die Bean-Definition zu unterstützen, die beim Testen der Funktionalität von MyBatis erforderlich ist. Dies ist [@ DataJpaTest
](http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features-testing-spring-", bereitgestellt von Spring Boot. Boot-Applications-Testing-Autoconfigured-JPA-Test) und [@ JdbcTest
](http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features -testing-spring-boot-application-testing-autoconfigured-jdbc-test) ist die MyBatis-Version (natürlich entspricht die Verwendung der von Spring Boot bereitgestellten Anmerkung !!).
Zusammen mit dieser Unterstützung wurde der "mybatis-spring-boot-Starter-Test" neu eingerichtet, um die zum Testen von MyBatis erforderlichen Bibliotheken zu lösen. Wenn Sie also die von MyBatis bereitgestellten Funktionen testen möchten, , Fügen wir die folgende Definition zu pom.xml
hinzu! !!
pom.xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>1.3.4</version>
<scope>test</scope>
</dependency>
Wenn Sie beispielsweise die folgende Mapper-Schnittstelle testen möchten,
src/main/java/com/example/mapper/TodoMapper.java
package com.example.mapper;
import com.example.domain.Todo;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface TodoMapper {
@Insert("INSERT INTO todo (title, details, finished) VALUES (#{title}, #{details}, #{finished})")
@Options(useGeneratedKeys = true)
void insert(Todo todo);
@Select("SELECT id, title, details, finished FROM todo WHERE id = #{id}")
Todo select(int id);
}
Es ist in Ordnung, wenn Sie die folgende Testfallklasse mit @ MybatisTest
erstellen.
src/main/java/com/example/mapper/TodoMapperTests.java
package com.example.mapper;
import com.example.domain.Todo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.boot.test.autoconfigure.MybatisTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.test.context.junit4.SpringRunner;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringRunner.class)
@MybatisTest // (1)
public class TodoMapperTests {
@Autowired
private TodoMapper todoMapper; // (2)
@Autowired
private NamedParameterJdbcOperations jdbcOperations; // (3)
@Test
public void insert() {
// setup
// none
// perform test and assertions
{
// (4)
Todo newTodo = new Todo();
newTodo.setTitle("Trinkparty");
newTodo.setDetails("Ginza 19:00");
todoMapper.insert(newTodo);
// (5)
Todo actualTodo =
jdbcOperations.queryForObject("SELECT * FROM todo WHERE id = :id",
new MapSqlParameterSource("id", newTodo.getId()),
new BeanPropertyRowMapper<>(Todo.class));
assertThat(actualTodo.getId()).isEqualTo(newTodo.getId());
assertThat(actualTodo.getTitle()).isEqualTo("Trinkparty");
assertThat(actualTodo.getDetails()).isEqualTo("Ginza 19:00");
assertThat(actualTodo.isFinished()).isEqualTo(false);
}
}
@Test
public void select() {
// (6)
// setup
Todo newTodo = new Todo();
newTodo.setTitle("Trinkparty");
newTodo.setDetails("Ginza 19:00");
GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
jdbcOperations.update(
"INSERT INTO todo (title, details, finished) VALUES(:title, :details, :finished)",
new BeanPropertySqlParameterSource(newTodo), keyHolder);
// perform test and assertions
{
// (7)
Todo actualTodo = todoMapper.select(keyHolder.getKey().intValue());
assertThat(actualTodo.getId()).isEqualTo(keyHolder.getKey().intValue());
assertThat(actualTodo.getTitle()).isEqualTo("Trinkparty");
assertThat(actualTodo.getDetails()).isEqualTo("Ginza 19:00");
assertThat(actualTodo.isFinished()).isEqualTo(false);
}
}
}
Artikelnummer | Erläuterung |
---|---|
(1) | Im Unterricht@MybatisTest Ist gegeben. Durch Hinzufügen dieser Anmerkung wird nur die AutoConfigure-Klasse aktiviert, die zum Ausführen von MyBatis erforderlich ist. Standardmäßig wird das Scannen von Komponenten deaktiviert, wodurch verhindert wird, dass Beans ohne Titel während des Tests im DI-Container registriert werden. |
(2) | Injizieren Sie den zu testenden Mapper.@MybatisTest Wenn Sie angeben, generiert die von MyBatis bereitgestellte AutoConfigure eine Bean of Mapper. |
(3) | Registrierungsdaten überprüfen und Testdaten registrierenNamedParameterJdbcTemplate Injizieren Sie die Bohne von.@MybatisTest Wenn du gibstJdbcTemplate WannNamedParameterJdbcTemplate Bean ist im DI-Container registriert. |
(4) | Getestet werdeninsert Rufen Sie die Methode auf. |
(5) | insert Überprüfen Sie das Ergebnis des Aufrufs der Methode. Hier,NamedParameterJdbcOperations Die registrierten Daten werden über die Methode von erfasst und die Gültigkeit der registrierten Daten wird überprüft. |
(6) | select Registrieren Sie Testdaten, um die Methode zu testen. Hier,NamedParameterJdbcOperations Die Testdaten werden nach der Methode von registriert. Darüber hinaus von Spring Framework zur Verfügung gestellt@Sql Sie können Testdaten auch mithilfe von Anmerkungen registrieren. |
(7) | Getestet werdenselect Rufen Sie die Methode auf. |
(8) | select Überprüfen Sie das Ergebnis des Aufrufs der Methode. |
Wenn Sie den Test in diesem Status ausführen, wird auch die Bean-Definition gelesen, die in der Spring Boot-Anwendungsklasse (Klasse mit @ SpringBootApplication
) definiert ist, die im oberen Paket vorhanden ist. Daher ist sie für den MyBatis-Test erforderlich. Fehlende Bohnen können im DI-Container registriert werden.
Wenn Sie keine Beans, die für MyBatis-Tests nicht benötigt werden, im DI-Container registrieren möchten, erstellen Sie eine leere Spring Boot-Anwendungsklasse wie die folgende im selben Paket wie die Testfallklasse. Auf diese Weise können Sie die Spring Boot-Anwendungsklasse im oberen Paket deaktivieren.
src/test/java/com/example/mapper/MapperTestApplication.java
package com.example.mapper;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MapperTestApplication {
}
Weitere Informationen finden Sie in der offiziellen Referenz (http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-test-autoconfigure/) und im [@ DataJpaTest
]( @ DataJpaTest
] von Spring Boot. http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jpa-test) und [ @ JdbcTest
](http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jdbc- Siehe Testreferenz.
Note: Die Annotation "@ MybatisTest" (und "Mybatis-Spring-Boot-Starter-Test") wird ebenfalls auf Version 1.2.1 zurückportiert, die gleichzeitig mit Version 1.3 veröffentlicht wurde.
Bis 1.3.0 funktionierte die Eingabe für einige Eigenschaften (mybatis.configuration.default-scripting-language
) nicht, aber" [Hinzufügen zusätzlicher Metadaten] von Spring Boot Bei Verwendung des Mechanismus "(http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#configuration-metadata-additional-metadata)" wird die Eingabe ab 1.3.1 wirksam. Wurde verbessert.
[Änderungen in Version 2.0](https://qiita.com/kazuki43zoo/items/38a24e051359e39c012c#%E3%82%B3%E3%83%B3%E3%83%95%E3%82%AE%E3%83 % A5% E3% 83% AC% E3% 83% BC% E3% 82% B7% E3% 83% A7% E3% 83% B3% E3% 83% 97% E3% 83% AD% E3% 83% 91 % E3% 83% 86% E3% 82% A3% E3% 81% A7typealiasessupertype% E3% 81% AE% E6% 8C% 87% E5% AE% 9A% E3% 82% 92% E3% 82% B5% E3 Siehe% 83% 9D% E3% 83% BC% E3% 83% 88). (Unterstützt ab Version 1.3.3)
Recommended Posts