[JAVA] Changements dans mybatis-spring-boot-starter 1.3

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.

Version requise de la bibliothèque dépendante

Pour utiliser la version 1.3, les versions suivantes sont requises.

Spring Boot 1.5+ requis

À 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.

Mise à jour de la version de la bibliothèque dépendante

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).

Ajout de l'interface 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.

Ajout de @ 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@MybatisTestEst 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.@MybatisTestSi 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 testNamedParameterJdbcTemplateInjectez le haricot de.@MybatisTestSi vous donnezJdbcTemplateQuandNamedParameterJdbcTemplateBean est enregistré dans le conteneur DI.
(4) Être testéinsertAppelez la méthode.
(5) insertValidez le résultat de l'appel de méthode. ici,NamedParameterJdbcOperationsLes données enregistrées sont acquises via la méthode de et la validité des données enregistrées est vérifiée.
(6) selectEnregistrez les données de test pour tester la méthode. ici,NamedParameterJdbcOperationsLes données de test sont enregistrées via la méthode de. De plus, fourni par Spring Framework@SqlVous pouvez également enregistrer les données de test à l'aide d'annotations.
(7) Être testéselectAppelez la méthode.
(8) selectValidez 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 (et mybatis-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.

Amélioration de la saisie des valeurs de propriété sur l'EDI

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é.

Prend en charge la spécification de 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

Changements dans mybatis-spring-boot-starter 2.0
Changements dans mybatis-spring-boot-starter 2.1
Changements dans mybatis-spring-boot-starter 1.3
Changements dans mybatis-spring-boot-starter 1.2
Changements dans Mockito 2
Changements dans Java 11
Changements dans JUnit5M4-> M5
Modifications de l'emplacement principal dans iOS 14
Changements majeurs dans Spring Boot 1.5
Notation de version Java qui change dans Java 10
Changements majeurs dans la fonctionnalité de base de Spring Framework 5.0