Inutile de dire que les avantages de l'apprentissage du code source sont en volume faible et simple en logique, donc j'écrirai une série d'articles à apprendre.
SQLSESSION
Le portail d'utilisation MyBatis est situé dans le package SQLSession dans le package org.apache.ibatis.Session. Il est constaté qu'il s'agit d'une interface, et il doit y avoir une classe d'implémentation par défaut defaultSqlSession dans le package org.apache.ibatis.session.defaults. Nous n'avons jamais nouveau cette classe et, selon les conventions Java, utilisons la méthode d'usine dans SQLSessionFactory. J'ai trouvé qu'il s'agit également d'une interface, il doit donc y avoir une classe d'implémentation par défaut defaultSQLSessionFactory. Cette classe n'a toujours pas besoin d'être créée par elle-même et utilise la méthode d'usine dans SQLSessionFactoryBuilder.
DefaultSqlSession
Les principales méthodes de DefaultSqlSession:
1) Cursor <T> selectCursor (instruction de chaîne, paramètre d'objet, Rowbounds Rowbounds), délégué à EMECTOR.QueryCursor (MS, WrapCollection (paramètre), Rowbounds).
2) Liste <e> selectList (instruction String, paramètre objet, Rowbounds Rowbounds) et void select (instruction String, paramètre objet, Rowbounds Rowbounds, Resulthandler Handler), et déléguer à l'exécutor.Query (MS, wrapCollection (paramètre), Rowbounds, Handler).
3) Int Update (instruction String, paramètre de l'objet), délégué à Executor.update (MS, wrapCollection (paramètre)).
On peut voir qu'il existe un exécuteur testamentaire pour le terminer à la fin.
Exécuteur
L'exécuteur est situé dans le package org.apache.ibatis.executor. C'est une interface. Les classes d'implémentation sont BasEEXECUTOR et CACHINGEXECUTOR. Parmi eux, BasEEXECUTOR est abstrait et possède trois sous-classes SimpleExECUTOR, REUSEEXECUTOR et BATCHEXECUTOR. Voir le nom et connaître le sens. Les principales méthodes de BaseExecutor:
1) Liste <e> Query (maptedstatement ms, paramètre de l'objet, Rowbounds Rowbounds, Resulthandler Resulthandler, Cachekey Key, Boundsql Boundsql) et List <E> QueryFromDatabase (MappredStatement MS, paramètre d'objet, Rowbounds Rowbounds, Resulthandler Resulthandler, Cachekey Key, Resulthandler Resulthandler, Cacheke Délégué en Abstract <E> List <E> DOQUERY (MAPPEDSATATION MS, paramètre de l'objet, Rowbounds Rowbounds, Resulthandler Resulthandler, BoundsQL Boundsql).
2) Cursor <e> QueryCursor (Maptedstatement MS, paramètre d'objet, Rowbounds Rowbounds), délégué à Abstract <E> Cursor <e> DOQUERYCURSOR (Maptedstatement MS, paramètre d'objet, Rowbounds Rowbounds, Boundsql Boundsql).
3) Int Update (MaptedStatement MS, paramètre de l'objet), délégué à Abstract Int DoupDate (MaptedStatement MS, paramètre de l'objet).
La classe de base traite la partie publique, le laissant à l'implémentation de la sous-classe.
Jetons un coup d'œil aux principales méthodes de SimpleExecutor:
1) Liste <e> DOQUERY (MAPPEDSATATION MS, paramètre de l'objet, Rowbounds Rowbounds, Resulthandler Resulthandler, BoundsQL Boundsql), délégué au gestionnaire. <E> Query (STMT, Resulthandler).
2) Cursor <e> DoQueryCursor (MaptedStatement MS, paramètre d'objet, Rowbounds Rowbounds, BoundsQL BoundsQL), confié au gestionnaire. <E> QueryCursor (STMT).
3) int doupdate (maptedstatement ms, paramètre objet), délégué à Handler.update (STMT).
On peut voir qu'il est finalement géré par le gestionnaire.
Déclaration de déclaration
StatementHandler est situé dans le package org.apache.ibatis.executor.statement. C'est une interface. Les classes de mise en œuvre sont BasestatementHandler et RoutingStatementHandler. BaseStatementHandler est abstrait et a trois sous-classes simpleshandler, préparée à préparation et callableStatementHandler. Ces trois devraient être familiers avec, et ils doivent gérer les instructions SQL sans paramètres, instructions SQL paramétrées et procédures stockées respectivement. Examinons les principales méthodes de SimplestationHandler:
1) Liste <e> requête (instruction Instruction, resulthandler Resulthandler), délégué à Statement.Exécute (SQL).
2) Cursor <e> QueryCursor (instruction Instruction), délégué à instruction.exécute (SQL).
3) INT UPDATE (instruction Instruction), délégué à Statement.Exécute (SQL).
Enfin, SQL est exécuté par déclaration. Cela revient au package java.sql.
MyBatis complète principalement le traitement d'encapsulation des paramètres SQL, obtient l'ensemble de résultats et génère des objets, et laisse le processus de construction des instructions SQL à l'utilisateur. L'auteur de Mybatis l'a conçu de cette façon. Bien que le cadre soit semi-automatique dans son ensemble, sa flexibilité a été considérablement augmentée.