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

Nous avons résumé les modifications de la version 2.1 publiées le 15 juillet 2019. Cette modification supprime la prise en charge de Spring Boot 2.0.x, qui est déjà dans EOL, et nécessite Spring Boot 2.1 ou version ultérieure.

De plus, il convient de noter

Veuillez également voir si nécessaire.

NOTE:

Au fait, la maintenance de mybatis-spring-boot-starter 2.0.x est pratiquement terminée (nous examinerons s'il faut fournir un correctif lorsqu'un bug fatal etc. est signalé, mais en gros Proposera une mise à jour de version).

De plus, la maintenance de Spring Boot 1.5.x (Spring Framework 4.3.x) se poursuit dans la version 1.3.x, mais il est annoncé que Spring Boot 1.5.x sera EOL d'ici 2019/8. Comme cela a été fait, la maintenance de la version 1.3.x sera finie en même temps (= la maintenance sera terminée en publiant la 1.3.5 à la fin).

Il a été signalé qu'il y a des bogues dans cette version, vous devez donc appliquer une solution de contournement si les conditions pour les bogues sont remplies. Le bogue sera corrigé dans mybatis-spring-boot-starter 2.1.1 (mybtis-spring 2.0.3), dont la sortie est prévue vers la mi-octobre 2019. (Ajouté le 21/07/2019)

Version requise de la bibliothèque dépendante

Version requise de Java

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

Dans la version 2.1, les versions de bibliothèque suivantes ont été mises à jour.

Nom de la bibliothèque 2.0.1 version 2.1.Version de 0 Supplément
MyBatis 3.5.1 3.5.2 -
MyBatis Spring 2.0.1 2.0.2 En ce qui concerne la compatibilité des API, MyBatis Spring 2.0+Si c'est le cas, cela fonctionne, mais2 pour utiliser toutes les fonctions.0.2+Est nécessaire
MyBatis Velocity(Optional) - 2.1.0 La compatibilité API est de 2.1.Cela fonctionne même avant 0, mais2 pour utiliser toutes les fonctions.1.0+Est nécessaire
MyBatis Freemarker(Optional) - 1.2.0 La compatibilité API est 1.2.Cela fonctionne même avant 0, mais1 pour utiliser toutes les fonctions.2.0+Est nécessaire
MyBatis Thymeleaf(Optional) - 1.0.1
Spring Boot 2.0.9.RELEASE 2.1.6.RELEASE 2 avec Travis CI.2.0-Testé avec SNAPSHOT

Détection automatique de "Language Driver"

Prend en charge un mécanisme pour détecter automatiquement LanguageDriver enregistré dans le conteneur DI et l'appliquer à MyBatis. Avec ce support, la classe LanguageDriver créée par le développeur peut être appliquée à MyBatis en définissant le Bean comme suit.

Exemple de définition de bean du pilote de langue d'origine


@Bean
MyLanguageDriver myLanguageDriver() {
  return MyLanguageDriver();
}

De plus, s'il n'y a qu'un seul bean de LanguageDriver détecté à partir du conteneur DI, leLanguageDriver détecté sera traité comme la classe LanguageDriver par défaut (si plusieurs beans sont détectés, les paramètres par défaut de MyBatis lui-même seront utilisés. Un certain XMLLanguageDriver est appliqué tel quel). Si vous ne voulez pas changer la classe par défaut LanguageDriver par la fonction de détection automatique, ou si vous voulez changer la classe LanguageDriver par défaut lors de l'utilisation de plusieurs LanguageDrivers ensemble, le suivantmybatis. Assurez-vous de spécifier explicitement la classe par défautLanguageDriver en utilisant la propriété default-scripting-language-driver (propriété ajoutée dans la version 2.1).

Ajout de mybatis.default-scripting-language-driver

Jusqu'à la version 2.0, la méthode pour spécifier la classe LanguageDriver à utiliser par défaut est la propriété mybatis.configuration.default-scripting-language (propriété pour définir la valeur directement sur la classe de configuration fournie par MyBatis lui-même). Cependant, cette propriété a été supprimée (utilisation interdite) et nouvellement mybatis car elle peut ne pas fonctionner comme prévu lorsqu'elle est combinée avec" Prise en charge de la configuration automatique de "Language Driver" "décrit plus loin. Ajout de .default-scripting-language-driver.

mybatis.default-scripting-language-driver={FQCN de la classe LanguageDriver par défaut}

Prise en charge de la configuration automatique de "Language Driver"

Prend en charge le mécanisme de configuration automatique pour les trois sous-modules MyBatis authentiques suivants (LanguageDriver).

Si vous ajoutez les fichiers jar des trois sous-modules ci-dessus au chemin de classe, les beans de la classe LanguageDriver fournis par les sous-modules seront automatiquement enregistrés dans le conteneur DI et appliqués à MyBatis. Si le développeur définit explicitement la classe LanguageDriver fournie par le sous-module ci-dessus comme un bean, la configuration automatique ne sera pas effectuée.

WARNING:

Si toutes les conditions suivantes sont remplies, la rétrocompatibilité sera perdue et des mesures supplémentaires seront nécessaires.

  • Un seul pot des trois sous-modules ci-dessus (mybatis-velocity, mybatis-freemarker, mybatis-thymeleaf) ** est sur le chemin de classe **
  • Le "LanguageDriver" par défaut n'est pas ** le "LanguageDriver" fourni par le sous-module **

Si les conditions sont remplies, la classe LanguageDriver fournie par le sous-module est définie sur la valeur par défautLanguageDriver, il est donc nécessaire de spécifier explicitement la valeur par défaut LanguageDriver comme indiqué ci-dessous. Il y a.

mybatis.default-scripting-language-driver={FQCN de la classe LanguageDriver par défaut}

Utilisation de MyBatis Velocity

L'ajout des artefacts suivants appliquera ʻorg.mybatis.scripting.velocity.VelocityLanguageDriver (si vous spécifiez mybatis-velocity 2.0 ou version antérieure, ʻorg.mybatis.scripting.velocity.Driver) à MyBatis.

pom.xml


<!--Lors de l'utilisation de Mybatis Velocity-->
<dependency>
  <groupId>org.mybatis.scripting</groupId>
  <artifactId>mybatis-velocity</artifactId>
  <version>2.1.0</version>
</dependency>

Si vous utilisez mybatis-velocity 2.1.0 ou version ultérieure, vous pouvez utiliser le mécanisme de propriété de configuration pour personnaliser le comportement de MyBatis Velocity et du moteur de modèle Velocity utilisé dans MyBatis Velocity.

src/main/resources/application.properties


#
# mybatis.scripting-language-driver.velocity.{key} = {value}format
#

#Propriétés qui personnalisent le comportement de Velocity lui-même
# mybatis.scripting-language-driver.velocity.velocity-settings.{name} = {value}format
# {name}Veuillez vous référer au document de référence pour les propriétés qui peuvent être définies sur.
mybatis.scripting-language-driver.velocity.velocity-settings.runtime.custom_directives = com.example.directives.MyDirective

#Attributs supplémentaires à transmettre au moteur de modèle(objet)Propriétés qui spécifient
# mybatis.scripting-language-driver.velocity.additional-context-attributes.{name} = {value}
mybatis.scripting-language-driver.velocity.additional-context-attributes.likeEscape = com.example.helpers.LikeEscape

Utilisation de MyBatis Free Marker

Ajoutez les artefacts suivants pour appliquer ʻorg.mybatis.scripting.freemarker.FreeMarkerLanguageDriver` à MyBatis.

pom.xml


<dependency>
  <groupId>org.mybatis.scripting</groupId>
  <artifactId>mybatis-freemarker</artifactId>
  <version>1.2.0</version>
</dependency>

Lors de l'utilisation de mybatis-velocity 1.2.0 ou version ultérieure, vous pouvez personnaliser le comportement du moteur de modèle de MyBatis FreeMarker et FreeMarker utilisé dans MyBatis FreeMarker en utilisant le mécanisme de la propriété de configuration.

src/main/resources/application.properties


#
# mybatis.scripting-language-driver.freemarker.{key} = {value}format
#

#Propriétés qui personnalisent le fonctionnement de FreeMarker lui-même
# mybatis.scripting-language-driver.freemarker.freemarker-settings.{name} = {value}format
# {name}Veuillez vous référer au document de référence pour les propriétés qui peuvent être définies sur.
mybatis.scripting-language-driver.freemarker.freemarker-settings.interpolation_syntax = dollar

#Propriétés qui personnalisent le comportement de MyBatis FreeMarker
# mybatis.scripting-language-driver.freemarker.{name} = {value}
# {name}Veuillez vous référer au document de référence pour les propriétés qui peuvent être définies sur.
mybatis.scripting-language-driver.freemarker.template-file.base-dir = sql

Utilisation de MyBatis Thymeleaf

Ajoutez les artefacts suivants pour appliquer ʻorg.mybatis.scripting.thymeleaf.ThymeleafLanguageDriver` à MyBatis.

pom.xml


<dependency>
  <groupId>org.mybatis.scripting</groupId>
  <artifactId>mybatis-thymeleaf</artifactId>
  <version>1.0.1</version>
</dependency>

Vous pouvez utiliser le mécanisme de propriété de configuration pour personnaliser le comportement du moteur de modèle Thymeleaf utilisé dans MyBatis Thymeleaf et MyBatis Thymeleaf.

src/main/resources/application.properties


#
# mybatis.scripting-language-driver.thymeleaf.{key} = {value}format
#

#Propriétés qui personnalisent le comportement de MyBatis Thymeleaf
# mybatis.scripting-language-driver.thymeleaf.{name} = {value}
# {name}Veuillez vous référer au document de référence pour les propriétés qui peuvent être définies sur.
mybatis.scripting-language-driver.thymeleaf.use2way = false
mybatis.scripting-language-driver.thymeleaf.template-file.cache-enabled = false
mybatis.scripting-language-driver.thymeleaf.dialect.like-additional-escape-target-chars = %, _

Prise en charge du contrôle d'initialisation différée Mapper

Ajout de la prise en charge de l'option de contrôle de la synchronisation d'initialisation du mappeur enregistré dans le conteneur DI (lorsque le conteneur DI est initialisé, injecté ou utilisé). Le comportement par défaut est que tous les mappeurs sont initialisés lorsque le conteneur DI est initialisé.

Cette option provoque une erreur lors de l'appel des méthodes Mappr sous certaines conditions lors de l'activation du mécanisme d'initialisation différée du bean pris en charge par Spring Boot 2.2 (la version officielle n'a pas été publiée au moment de la publication). Par conséquent, il a été ajouté afin que l'utilisateur puisse contrôler si l'initialisation du délai est appliquée ou non à Mapper. Si vous voulez juste éviter l'erreur, vous pouvez désactiver sans condition l'initialisation retardée pour Mapper, mais je pense que le mécanisme d'initialisation retardée est efficace au moment du développement (test), donc MyBatis (mybatis-spring) & mybatis-spring-boot-starter) Activé pour contrôler l'initialisation différée de Mapper indépendamment. Pour plus d'informations, consultez À propos de mybatis.lazy-initialization ajouté dans mybatis-spring-boot 2.1.0.

NOTE:

Le mécanisme d'initialisation différée fourni dans cette version est unique à MyBatis (mybatis-spring & mybatis-spring-boot-starter), il peut donc également être utilisé dans la série Spring Boot 2.1.

Détection automatique de «TypeHandler»

Prise en charge du mécanisme pour détecter automatiquement TypeHandler enregistré dans le conteneur DI et l'appliquer à MyBatis. Avec ce support, la classe TypeHandler créée par le développeur peut être appliquée à MyBatis en définissant le Bean comme suit.

Exemple de définition de bean de TypeHandler d'origine


@Bean
MyTypeHandler myTypeHandler() {
  return MyTypeHandler();
}

Ajout de MapperScannerConfigurer à la condition de désactivation de l'analyse du mappeur

Si le développeur a explicitement défini Mapper pour s'enregistrer auprès du conteneur DI, mybatis-spring-boot-start désactivera l'analyse automatique de Mapper. Jusqu'à la version 2.0, l'analyse automatique était désactivée si l'une des conditions suivantes était remplie:

Dans la version 2.1, en plus de ce qui précède

Si vous le faites, l'analyse automatique de Mapper sera désactivée.

Correction de "Erreur de duplication lors de la numérisation de l'alias de type"

Dans mybatis-spring 2.0.1, dont la version 2.0.1 dépend, sous certaines conditions, "Erreur dupliquée lors de l'analyse des alias de type / kazuki43zoo / items / 38a24e051359e39c012c #% E3% 83% 99% E3% 83% BC% E3% 82% B9% E3% 83% 91% E3% 83% 83% E3% 82% B1% E3% 83% BC% E3% 82% B8% E6% 8C% 87% E5% AE% 9A% E6% 99% 82% E3% 81% AE% E3% 83% AF% E3% 82% A4% E3% 83% AB% E3% 83% 89% E3% 82% AB% E3% 83% BC% E3% 83% 89% E3% 82% 92% E3% 82% B5% E3% 83% 9D% E3% 83% BC% E3% 83% 88) », mais il a été corrigé dans mybatis-spring 2.0.2, dont la version 2.1.0 dépend.

Ajout de l'attribut properties à @ MybatisTest

Ajout d'un attribut (properties) pour spécifier les propriétés (format clé = valeur) à @ MybatisTest. Cette prise en charge élimine le besoin d'utiliser @ TestPropertySource si vous avez une propriété que vous souhaitez appliquer uniquement pendant les tests. Ce support est un retour à @ MybatisTest du mécanisme ajouté à @ JdbcTest dans Spring Boot 2.1.

@MybatisTest(properties = {
  "logging.level.org.springframework.jdbc=debug",
  "spring.datasource.schema=classpath:TodoMapperTests/schema.sql"
  })
public class TodoMapperTests {
  // ...
}

Modification du fichier source du document de XDOC à Markdown

Changement du fichier source du document de référence généré à l'aide du Maven Site Plugin du format XDOC au format Markdown. Depuis que je viens de changer le format du fichier source, le contenu du document est fondamentalement le même (sauf pour la partie application des changements pris en charge dans 2.1.0), mais ... "Code surligné du code source" est C'est parti (j'enquête actuellement pour savoir s'il s'agit d'une restriction lors de l'utilisation de Markdown ou si le plugin est utilisé de manière incorrecte?).

En raison de cette prise en charge, la surbrillance du code a disparu du document post-build, mais en utilisant le format Markdown, le dernier document (= document de version de snapshot) peut être référencé via GitHub. (= J'ai changé du format XDOC au format Markdown afin de donner la priorité à ce mérite).

Ajouter un échantillon simple

Dans la version 2.1, nous avons augmenté la variation de Sample pour améliorer le test d'intégration. C'était.

Associé à Language Driver

Exemple de nom de projet La description
mybatis-spring-boot-sample-velocity MyBatis Velocity 2.1+Exemple de projet simple de base
mybatis-spring-boot-sample-velocity-legacy MyBatis Velocity 2.Exemple de projet simple basé sur 0
mybatis-spring-boot-sample-freemarker MyBatis FreeMarker 1.2+Exemple de projet simple de base
mybatis-spring-boot-sample-velocity-legacy MyBatis FreeMarker 1.1.exemple de projet simple basé sur x
mybatis-spring-boot-sample-thymeleaf Exemple de projet simple de MyBatis Thymeleaf

Liés au langage JVM

Exemple de nom de projet La description
mybatis-spring-boot-sample-groovy Exemple de projet simple utilisant Groovy
mybatis-spring-boot-sample-kotlin Exemple de projet simple utilisant Kotlin

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