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)
TypeHandler
avec la spécification de package pour créer une instance en utilisant un constructeur qui prend Class
comme argument (voir" gh-370 pour plus de détails. boot-starter / issues / 370) "et" mybatis-spring / gh-394 ")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 |
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 LanguageDriver
s ensemble, le suivantmybatis. Assurez-vous de spécifier explicitement la classe par défaut
LanguageDriver en utilisant la propriété default-scripting-language-driver
(propriété ajoutée dans la version 2.1).
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}
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éfautLanguageDriver
comme indiqué ci-dessous. Il y a.mybatis.default-scripting-language-driver={FQCN de la classe LanguageDriver par défaut}
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
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
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 = %, _
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.
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();
}
MapperScannerConfigurer
à la condition de désactivation de l'analyse du mappeurSi 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:
@ MapperScan
dans la classe de configuration<mybatis: scan>
dans la configuration XMLMapperFactoryBean
Dans la version 2.1, en plus de ce qui précède
MapperScannerConfigurer
Si vous le faites, l'analyse automatique de Mapper sera désactivée.
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.
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 {
// ...
}
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).
Dans la version 2.1, nous avons augmenté la variation de Sample pour améliorer le test d'intégration. C'était.
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 |
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