Nous avons résumé les changements 1.3 publiés le 10 avril 2017.
De plus, il convient de noter
S'il te plait regarde.
Note: ** 21/08/2017: Addendum ** Ajout de changements dans la version 1.3.1. ** 2019/5/7: Addendum ** Reflète les changements des versions 1.3.2, 1.3.3 et 1.3.4.
Pour utiliser la version 1.3, les versions suivantes sont requises.
À partir de la version 1.3, l'annotation @ MybatisTest
, qui prend en charge la définition de Bean requise lors du test de la fonctionnalité de MyBatis, a été ajoutée, et cette annotation dépend de l'API prise en charge par Spring Boot 1.5, donc Spring Boot 1.5+ Est requis. Si vous souhaitez utiliser mybatis-spring-boot-starter avec la série Spring Boot 1.4, veuillez utiliser la série version 1.2.
Dans la version 1.3, les versions de bibliothèque suivantes ont été mises à jour.
Nom de la bibliothèque | 1.2.Version de 0 | 1.3.Version de 0 | 1.3.1 version | 1.3.2 versions | 1.3.Version de 3 | 1.3.Version de 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: Par rapport à la version 1.2.1 publiée en même temps que la version 1.3.0, seule la version de Spring Boot a été mise à jour (1.4.5.RELEASE-> 1.5.2.RELEASE).
ConfigurationCustomizer
Une interface de rappel (ʻorg.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer) pour personnaliser le bean (Bean de ʻorg.apache.ibatis.session.Configuration
) qui contient les informations de configuration de MyBatis avec du code Java. ) A été ajouté. Si vous définissez un bean qui implémente cette interface comme indiqué ci-dessous, la méthode configure
de ConfigurationCustomizer
sera rappelée, et vous pouvez utiliser le code Java pour terminer la configuration de MyBayis. Peut être personnalisé.
Exemple de définition de bean de ConfigurationCustomizer à l'aide d'une expression lambda
@Configuration
public class MyBatisConfiguration {
@Bean
ConfigurationCustomizer mybatisConfigurationCustomizer() {
return (configuration) -> {
// aplication.Code de personnalisation implémenté qui ne peut pas être spécifié / exprimé par les propriétés
configuration.getTypeHandlerRegistry().register(RoundingMode.class, EnumOrdinalTypeHandler.class);
};
}
}
Note:
L'interface
ConfigurationCustomizer
est également rétroportée vers la version 1.2.1, qui a été publiée en même temps que la version 1.3.0.
@ MybatisTest
(mybatis-spring-boot-starter-test)À partir de la version 1.3, l'annotation @ MybatisTest
est ajoutée pour prendre en charge la définition de bean requise lors du test de la fonctionnalité de MyBatis. Il s'agit de [@ DataJpaTest
](http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features-testing-spring-" fourni par Spring Boot. boot-applications-testing-autoconfigured-jpa-test) et [@ JdbcTest
](http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features -testing-spring-boot-applications-testing-autoconfigured-jdbc-test) sera la version MyBatis (bien sûr, l'utilisation est la même que l'annotation fournie par Spring Boot !!).
Parallèlement à ce support, mybatis-spring-boot-starter-test
a été nouvellement créé pour résoudre les bibliothèques requises pour tester MyBatis, donc si vous souhaitez tester les fonctions fournies par MyBatis, , Ajoutons la définition suivante à pom.xml
! !!
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>
Par exemple, si vous souhaitez tester l'interface Mapper suivante,
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);
}
C'est OK si vous créez la classe de cas de test suivante en utilisant @ MybatisTest
.
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("soirée à boire");
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("soirée à boire");
assertThat(actualTodo.getDetails()).isEqualTo("Ginza 19:00");
assertThat(actualTodo.isFinished()).isEqualTo(false);
}
}
@Test
public void select() {
// (6)
// setup
Todo newTodo = new Todo();
newTodo.setTitle("soirée à boire");
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("soirée à boire");
assertThat(actualTodo.getDetails()).isEqualTo("Ginza 19:00");
assertThat(actualTodo.isFinished()).isEqualTo(false);
}
}
}
Numéro d'article | La description |
---|---|
(1) | En classe@MybatisTest Est donnée. En ajoutant cette annotation, seule la classe AutoConfigure requise pour exécuter MyBatis est activée. Le comportement par défaut est de désactiver l'analyse des composants, ce qui empêche les beans sans titre d'être enregistrés dans le conteneur DI pendant le test. |
(2) | Injectez le mappeur à tester.@MybatisTest Si vous donnez, AutoConfigure fourni par MyBatis générera un Bean of Mapper. |
(3) | Pour vérifier les données d'enregistrement et enregistrer les données de testNamedParameterJdbcTemplate Injectez le haricot de.@MybatisTest Si vous donnezJdbcTemplate QuandNamedParameterJdbcTemplate Bean est enregistré dans le conteneur DI. |
(4) | Être testéinsert Appelez la méthode. |
(5) | insert Validez le résultat de l'appel de méthode. ici,NamedParameterJdbcOperations Les données enregistrées sont acquises via la méthode de et la validité des données enregistrées est vérifiée. |
(6) | select Enregistrez les données de test pour tester la méthode. ici,NamedParameterJdbcOperations Les données de test sont enregistrées via la méthode de. De plus, fourni par Spring Framework@Sql Vous pouvez également enregistrer les données de test à l'aide d'annotations. |
(7) | Être testéselect Appelez la méthode. |
(8) | select Validez le résultat de l'appel de méthode. |
Si vous exécutez le test dans cet état, la définition de Bean définie dans la classe d'application Spring Boot (classe avec @ SpringBootApplication
) existant dans le package supérieur est également lue, elle est donc nécessaire pour le test MyBatis. Les grains manquants peuvent être enregistrés dans le conteneur DI.
Si vous ne souhaitez pas enregistrer les beans qui ne sont pas nécessaires pour les tests MyBatis dans le conteneur DI, créez une classe d'application Spring Boot vide comme celle ci-dessous dans le même package que la classe de cas de test. En faisant cela, vous pouvez désactiver la classe d'application Spring Boot dans le package supérieur.
src/test/java/com/example/mapper/MapperTestApplication.java
package com.example.mapper;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MapperTestApplication {
}
Pour plus d'informations, consultez la référence officielle (http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-test-autoconfigure/) et le [@ DataJpaTest
]( @ DataJpaTest
] fourni par 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) et [ @ JdbcTest
](http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-jdbc- Voir la référence du test).
Note: L'annotation
@ MybatisTest
(etmybatis-spring-boot-starter-test
) est également rétroportée vers la version 1.2.1, qui a été publiée en même temps que la version 1.3.
Jusqu'au 1.3.0, l'achèvement des entrées pour certaines propriétés (mybatis.configuration.default-scripting-language
) ne fonctionnait pas, mais" [Ajout de méta-données supplémentaires] fourni par Spring Boot En utilisant le mécanisme de (http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#configuration-metadata-additional-metadata) ", l'achèvement des entrées sera effectif à partir de 1.3.1. A été amélioré.
typeAliasesSuperType
dans la propriété de conjugaison[Changements dans la 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 Voir% 83% 9D% E3% 83% BC% E3% 83% 88). (Pris en charge à partir de la version 1.3.3)
Recommended Posts