Introduction à Mybatis
MyBatis est un projet open source d'Apache. En 2010, ce projet a été déplacé de la Fondation du logiciel Apache à Google Code et a été renommé Mybatis. Il prend en charge d'excellents cadres de couche de persistance pour les requêtes SQL ordinaires, les procédures stockées et la cartographie avancée. MyBatis élimine les paramètres manuels de presque tous les code et paramètres JDBC et recherchez des ensembles de résultats. MyBatis utilise des XML ou des annotations simples pour la configuration et le mappage d'origine pour mapper les interfaces et les Pojos de Java (Old Java objets) en enregistrements dans la base de données.
Introduction à Mybatis Interceptor
MyBatis offre une fonction de plugin. Bien qu'il s'appelle un plugin, il s'agit en fait d'une fonction intercepteur. MyBatis vous permet d'intercepter les appels à un certain point lors de l'exécution d'une instruction mappée. MyBatis nous fournit une interface intercepteur, en implémentant cette interface, nous pouvons définir notre propre intercepteur.
MyBatis appelle quatre types de méthodes par défaut:
1.EXECUTOR (Mise à jour, requête, Flushstatements, Commit, Rollback, GetTransaction, Close, Isclose)
2. ParamètreHandler (getParameterObject, setParameters)
3.ResultSethandler (HandlerresultSets, mancheOutputParameters)
4.statementHandler (préparer, paramétrer, lot, mise à jour, requête)
Les 4 ci-dessus sont toutes des méthodes de configuration. Ces méthodes seront exécutées dans une opération de MyBatis (ajouter, supprimer, modifier et requérir). L'ordre d'exécution est exécuteur, paramètre Handleur, ResultsEthandler et StatementHandler.
La définition d'une interface est:
Parmi ces trois méthodes, le plugin est utilisé pour la construction du processeur, l'interception est utilisée pour gérer les classes de proxy et les paramètres de propriété intercepteur à terme SetProperties.
La classe de plugin implémente l'interface invocationhandler et renvoie la propre classe proxy dynamique de JDK. Pour la méthode de WABLE du plugin:
Déterminez si l'objet cible actuel a une interface qui doit être interceptée. Sinon, il renvoie l'objet cible lui-même, et s'il y en a, il renvoie un objet proxy.
L'invocationHandler de l'objet proxy est un plugin. Lorsque l'objet cible exécute la méthode d'interface, s'il est exécuté via l'objet proxy, la méthode invoquée de l'invocationHandler sera appelée, qui est la méthode invoquée du plugin:
Si la méthode actuellement exécutée est une méthode définie qui doit être interceptée, l'objet cible, la méthode à exécuter et les paramètres de la méthode sont encapsulés dans un objet d'invocation et l'invocation encapsulée est transmise sous forme de paramètres à la méthode d'interception de l'intercepteur actuel. S'il n'est pas nécessaire d'intercepter, la méthode actuelle est appelée directement.
Pour la méthode getignaturemap
GetsignAtremap obtiendra d'abord l'annotation d'interception de l'interception, la traversant pour obtenir l'attribut type, puis obtiendra la méthode avec l'attribut de méthode et l'attribut args en fonction de ce type, et enfin renvoyez une carte avec la clé de type et le jeu de valeur <méthode>. Exemples: Filtrage de la méthode de mise à jour de Executor.Class produira une clé en tant qu'Exécutro et une valeur en tant qu'instance de méthode, avec des paramètres correspondant à des méthodes mappés de statement et de méthode.
Configurabilité interceptrice: