Unnötig zu erwähnen, dass die Vorteile des Quellcode -Lernens kleiner und logisch einfach sind. Daher werde ich eine Reihe von Artikeln zum Lernen schreiben.
SqlSession
Das MyBatis -Nutzungsportal befindet sich in der SQLSession im org.apache.ibatis.Session -Paket. Es wurde festgestellt, dass es sich um eine Schnittstelle handelt, und es muss eine Standard -Implementierungsklasse defaultSQLSession im Paket org.apache.ibatis.session.defaults geben. Wir haben diese Klasse nie neu und verwenden nach Java -Konventionen die Fabrikmethode in SQLSessionFactory. Ich fand, dass es sich auch um eine Schnittstelle handelt, daher muss es eine Standard -Implementierungsklasse defaultSQLSessionFactory geben. Diese Klasse muss noch nicht von selbst erstellt werden und verwendet die Werksmethode in SQLSessionFactoryBuilder.
DefaultSQLSession
Die Hauptmethoden in defaultsqlSession:
1) Cursor <T> selectCursor (String -Anweisung, Objektparameter, Rowbounds Rowbounds), an Executor.QueryCursor (MS, WrapCollection (Parameter), RowBounds) delegiert.
2) List <E> SELTILISTE (STRING -Anweisung, Objektparameter, Rowbounds Rowbounds) und Void Select (String -Anweisung, Objektparameter, Rowbounds Rowbounds, ResultHandler -Handler) und delegieren Sie an den Executor.Query (MS, Wrapcollection (Parameter), Rowbounds, Handler).
3) Int -Update (String -Anweisung, Objektparameter), Delegieren Sie an Executor.Update (MS, WrapCollection (Parameter)).
Es ist ersichtlich, dass es einen Testamentsvollstrecker gibt, der es am Ende vervollständigt.
Testamentsvollstrecker
Der Executor befindet sich im Paket org.apache.ibatis.executor. Es ist eine Schnittstelle. Die Implementierungsklassen sind basexexecutor und cachingexecutor. Unter ihnen ist Baseexexecutor abstrakt und verfügt über drei Unterklassen Simplexecutor, Reusexexecutor und Batchexecutor. Sehen Sie den Namen und kennen Sie die Bedeutung. Die Hauptmethoden in Baseexexecutor:
1) List<E> query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey key, BoundSql boundSql) and List<E> queryFromDatabase(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey key, BoundSql boundSql), delegated as Abstract <E> List <E> doQuery (MSPADSTATEMENT MS, Objektparameter, Rowbounds Rowbounds, ResultHandler Resulthandler, Boundsql boundsql).
2) Cursor <e> queryCursor (MSPDStatement MS, Objektparameter, Rowbounds RowBounds), an abstrakte <e> cursor <e> doQueryCursor (MADPDStatement MS, Objektparameter, Rowbounds Rowbounds, BoundSQL Bedsql) delegiert.
3) INT -Update (MSPADSTATEMENT MS, Objektparameter), Delegieren Sie in das abstrakte Int -Doupdate (MSKappedStatement MS, Objektparameter).
Die Basisklasse verarbeitet den öffentlichen Teil und überlässt es der Implementierung der Unterklasse.
Schauen wir uns die Hauptmethoden in SimpleExecutor an:
1) LIST <E> DoQuery (MSKADDStatement MS, Objektparameter, Rowbounds Rowbounds, ResultHandler ResultHandler, Boundsql Boundsql), an die Handler delegiert.
2) Cursor <E> doQueryCursor (MSPADSTATEMENT MS, Objektparameter, Rowbounds Rowbounds, BoundSQL boundSQL), der Handlerin anvertraut ist. <E> queryCursor (STMT).
3) int doupdate (kartierstatement MS, Objektparameter), delegieren Sie an Handler.Update (STMT).
Es ist zu sehen, dass es endlich vom Handler behandelt wird.
Erklärung
StatementHandler befindet sich im Paket org.apache.ibatis.executor.statement. Es ist eine Schnittstelle. Die Implementierungsklassen sind BasestatementHandler und RoutingStatementHandler. BasestatementHandler ist abstrakt und verfügt über drei Unterklassen, die SimpleStatementHandler, PrepedStatementHandler und CallablestatementHandler, verfügt. Diese drei sollten mit SQL -Anweisungen ohne Parameter, parametrisierten SQL -Anweisungen bzw. gespeicherten Verfahren vertraut sein. Schauen wir uns die Hauptmethoden in SimpleStatementHandler an:
1) LIST <E> Abfrage (Anweisung Anweisung, ResultHandler ResultHandler), Delegieren von Anweisung.execute (SQL).
2) Cursor <e> queryCursor (Anweisung), delegieren Sie die Anweisung.execute (SQL).
3) INT -Update (Anweisung), delegieren Sie die Anweisung.execute (SQL).
Schließlich wird SQL durch Erklärung ausgeführt. Dies kehrt zum java.sql -Paket zurück.
MyBatis vervollständigt hauptsächlich die Kapselungsverarbeitung von SQL -Parametern, erhält die Ergebnismenge und generiert Objekte und überlässt den Konstruktionsprozess von SQL -Anweisungen dem Benutzer. MyBatis 'Autor hat es so gestaltet. Obwohl der Rahmen insgesamt halbautomatisch ist, wurde seine Flexibilität stark erhöht.