English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Introduzione all'implementazione degli intercettori Mybatis

 Introduzione a MyBatis

MyBatis era un progetto open source di Apache chiamato iBatis, nel 2010 questo progetto è stato spostato da Apache Software Foundation a Google Code e rinominato MyBatis. È un eccellente framework di persistenza che supporta query SQL normali, procedure memorizzate e mapping avanzati, che elimina quasi tutto il codice JDBC e la configurazione manuale dei parametri e la ricerca dei risultati del set. MyBatis utilizza XML o annotazioni semplici per la configurazione e la mappatura originale, mappando le interfacce e gli oggetti POJO (Plain Old Java Objects, oggetti Java comuni) nei record del database.

Introduzione agli intercettori di MyBatis

MyBatis fornisce una funzione di plugin, sebbene si chiami plugin, in realtà è una funzione di intercettore. MyBatis consente di intercettare le chiamate in un punto specifico dell'esecuzione delle espressioni mappate. Per gli intercettori, MyBatis ci fornisce un'interfaccia Interceptor, attraverso cui possiamo definire i nostri own intercettori.

MyBatis chiama di default quattro tipi di metodi:

1.Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)

2.ParameterHandler (getParameterObject, setParameters)

3.ResultSetHandler (handleResultSets, handleOutputParameters)

4.StatementHandler (prepare, parameterize, batch, update, query)

Questi 4 sono metodi di Configuration, che vengono eseguiti in un'operazione di MyBatis (aggiungere, eliminare, modificare, query), l'ordine di esecuzione è Executor, ParameterHandler, ResultSetHandler, StatementHandler.

La definizione dell'interfaccia è:

Questi tre metodi, plugin viene utilizzato per costruire il processore, intercept per la classe proxy, setProperties per la configurazione delle proprietà dell'intercettore.
La classe Plugin implementa l'interfaccia InvocationHandler e restituisce una classe di proxy dinamico di sé stessa del JDK, per il metodo wrap del plugin:

Verifica se l'oggetto di destinazione ha implementato l'interfaccia da intercettare necessaria, se non lo ha, restituisce l'oggetto di destinazione stesso, se lo ha, restituisce un oggetto proxy.

L'InvocationHandler dell'oggetto proxy è un Plugin, quando l'oggetto di destinazione esegue un metodo dell'interfaccia, se è eseguito tramite l'oggetto proxy, verrà chiamato il metodo invoke dell'InvocationHandler, che è il metodo invoke del Plugin:

Se il metodo eseguito correntemente è un metodo da intercettare definito, impacchetta l'oggetto di destinazione, il metodo da eseguire e i parametri del metodo in un oggetto Invocation, quindi passa l'oggetto impacchettato come parametro al metodo intercept dell'intercettore corrente. Se non è necessario intercettare, chiama direttamente il metodo corrente.

Per il metodo getSignatureMap

getSignatureMap prende inizialmente l'intercettore di tipo Intercept, esplora l'attributo type, quindi secondo questo type ottiene un metodo con attributi method e args, infine restituisce una mappa con come chiave e come valore Set<Method>. Esempio: filtrare il metodo update della classe Executor.class, produrrà una chiave come Executro e un valore come istanza di Method, che contiene MappedStatement e i parametri del metodo method corrispondente.

Configurabilità degli intercettori:

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il diritto d'autore è di proprietà del rispettivo proprietario, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato sottoposto a elaborazione editoriale umana e non assume responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata, questo sito rimuoverà immediatamente i contenuti sospetti di violazione del copyright.

Ti potrebbe interessare