Einführung in MyBatis
MyBatis ist ein Open -Source -Projekt von Apache. Im Jahr 2010 wurde dieses Projekt von der Apache Software Foundation in Google Code verschoben und in MyBatis umbenannt. Es unterstützt hervorragende Persistenzschicht -Frameworks für normale SQL -Abfragen, gespeicherte Verfahren und erweiterte Zuordnung. MyBatis eliminiert manuelle Einstellungen fast aller JDBC -Code und -Parameter und die Suche nach Ergebnissätzen. MyBatis verwendet einfache XML oder Anmerkungen zur Konfiguration und ursprüngliche Zuordnung, um Schnittstellen und Javas Pojos (einfache alte Java -Objekte) in Datensätze in der Datenbank zu kartieren.
Einführung in MyBatis Interceptor
MyBatis bietet eine Plugin -Funktion. Obwohl es als Plugin bezeichnet wird, handelt es sich tatsächlich um eine Interceptor -Funktion. Mit MyBatis können Sie Anrufe während der Ausführung einer zugeordneten Anweisung an einem bestimmten Punkt abfangen. MyBatis bietet uns eine Interceptor -Schnittstelle, indem wir diese Schnittstelle implementieren, können wir unseren eigenen Interceptor definieren.
MyBatis ruft standardmäßig vier Arten von Methoden auf:
1.executor (Update, Abfrage, Spuschstatements, Commit, Rollback, GetTransaction, Close, isclose)
2. ParameterHandler (GetParameterObject, SetParameters)
3.ResulltsaHandler (Handleresultsets, HandleOutputParameters)
4. StatementHandler (Vorbereiten, Parametrize, Stapel, Update, Abfrage)
Die oben genannten 4 sind alle Konfigurationsmethoden. Diese Methoden werden in einem Betrieb von MyBatis ausgeführt (hinzufügen, löschen, ändern und abfragen). Die Reihenfolge der Ausführung ist Executor, ParameterHandler, ResuldersThandler und Erklärung.
Die Definition einer Schnittstelle lautet:
Unter diesen drei Methoden wird Plugin für den Bau des Prozessors verwendet, Intercept wird zur Behandlung von Proxyklassen und zur Einstellungen von SetProperties -Interceptor -Eigenschaften verwendet.
Die Plugin -Klasse implementiert die InvocationHandler -Schnittstelle und gibt die eigene dynamische Proxy -Klasse eines JDK zurück. Für die Wrap -Methode des Plugins:
Bestimmen Sie, ob das aktuelle Zielobjekt über eine Schnittstelle verfügt, die abgefangen werden muss. Wenn nicht, gibt es das Zielobjekt selbst zurück, und wenn es vorhanden ist, gibt es ein Proxy -Objekt zurück.
Der InvocationHandler des Proxy -Objekts ist ein Plugin. Wenn das Zielobjekt die Schnittstellenmethode ausführt und wenn es über das Proxy -Objekt ausgeführt wird, wird die Invoke -Methode des InvocationHandlers aufgerufen. Dies ist die Aufrufmethode des Plugins:
Wenn die aktuell ausgeführte Methode eine definierte Methode ist, die abgefangen werden muss, werden das Zielobjekt, die zu ausgeführte Methode und die Methodenparameter in ein Aufrufobjekt eingekapselt, und der eingekapselte Aufruf wird als Parameter an die Intercept -Methode des aktuellen Interceptors übergeben. Wenn es nicht abfangen muss, wird die aktuelle Methode direkt aufgerufen.
Für die Getsignaturemap -Methode
GetSignaturemap erhält zuerst die Intercept -Annotation des Intercept, um es zu durchqueren, um das Typattribut zu erhalten, und dann die Methode mit dem Methode -Attribut und dem Argumentattribut basierend auf diesem Typ abzurufen und schließlich eine Karte mit dem Typ -Taste und des Wertssatzes <Methode> zurückzugeben. Beispiele: Die Filterung der Aktualisierungsmethode von Executor.CLASS erzeugt einen Schlüssel als Executro und einen Wert als Methodeinstanz, wobei Parameter entsprechen, die den Methoden von Kartierstatement- und Methoden entsprechen.
Interceptor -Konfigurierbarkeit: