MyBatis-Spring vous permet d'injecter des cartouches dans les haricots de service. Lorsque vous utilisez un mappeur, il est normal d'appeler le mappeur comme appeler DAO, mais pour le moment, vous n'avez pas besoin de coder les implémentations DAO, car MyBatis le fera pour vous.
Avec le mappeur injecté, votre code n'aura pas de dépendances MyBatis-Spring et de dépendances MyBatis. Il y a un mappeur si simple dans notre application. Vous devez également savoir que le mappeur n'est qu'une interface:
Interface publique UserMapper {User GetUser (String UserId); }C'est ainsi que vous utilisez MyBatis-Spring pour créer des mappeurs:
<bean id = "userMapper"> <propriété name = "sqlSessionFactory" ref = "sqlSessionFactory" /> <propriété name = "Mappetinface" value = "sampe.usermapper" /> </ bean>
Maintenant, votre mappeur est prêt à injecter dans l'objet de service:
<bean id = "Fooservice"> <propriété name = "userMapper" ref = "userMapper" /> </bEAN>
Remarque: Le nom complet de la classe de l'interface de mapper correspond à l'espace de noms du fichier de configuration du mappeur XML.
À propos de MappenfactoryBean
La classe de proxy créée par MapperFactoryBean implémente l'interface de mapper (comme dans l'exemple ci-dessus: userMapper) et est injecté dans l'application. Étant donné que l'agent est créé dans l'environnement RUN, le mappeur spécifié doit être une interface. Au lieu d'une classe d'implémentation concrète.
Il n'est pas nécessaire d'enregistrer tous les mappeurs dans le fichier de configuration XML de Spring. Au lieu de cela, vous pouvez utiliser un mapperscannerconfigurer, qui recherchera des mappeurs sous le chemin de classe et les créera automatiquement dans MapperFactoryBeans. Pour créer un mapperscannerconfigurer, vous pouvez ajouter le code suivant à la configuration de Spring:
<ean> <Propery name = "basepackage" value = "org.mybatis.spring.sample.mapper" /> </ank>
La propriété BasEpackage vous permet de définir le chemin de base du package pour le fichier d'interface de mappeur. Vous pouvez définir plus d'un chemin de package à l'aide d'un demi-colon ou d'une virgule en tant que séparateur. Chaque mappeur sera fouillé de manière récursive dans le chemin du package spécifié.
Notez qu'il n'est pas nécessaire de spécifier SQLSessionFactory ou SQLSessionTemplate, car le MAPPERSCANNERCONFIGURING créera un MapperFactoryBean puis l'assemblez automatiquement. Cependant, si vous utilisez plus d'une source de données (et donc plusieurs SQLSessionFactory), l'assemblage automatique peut échouer. Dans ce cas, vous pouvez utiliser la propriété SQLSessionFactory ou SQLSessionTemplate pour définir la bonne usine / modèle.
MAPPERScannerConfigurer prend en charge le filtrage pour créer des mappeurs par des interfaces de création ou des annotations spécifiées. La propriété AnnotationClass spécifie le nom d'annotation à rechercher. La propriété MarkerInterface spécifie l'interface parent à rechercher. Si les deux sont spécifiés, le mappeur ajouté à l'interface correspond aux deux critères. Par défaut, les deux propriétés sont nuls, donc toutes les interfaces données dans le package de base peuvent être chargées sous forme de mappeurs.
Le mappeur découvert sera nommé en utilisant la stratégie de dénomination par défaut de Spring pour le composant de détection automatique. Autrement dit, si aucune annotation n'est trouvée, elle utilise le nom de classe non très qualifié non capulé du mapper. Mais si vous trouvez le @Component ou JSR-330 @ Named Annotation, il obtiendra le nom.