MyBatisの紹介
MyBatisはApacheのオープンソースプロジェクトです。 2010年、このプロジェクトはApache Software FoundationからGoogleコードに移動し、MyBatisと改名されました。通常のSQLクエリ、ストアドプロシージャ、高度なマッピングのための優れた永続レイヤーフレームワークをサポートします。 MyBatisは、ほぼすべてのJDBCコードとパラメーターの手動設定を排除し、結果セットを検索します。 MyBatisは、構成と元のマッピングにシンプルなXMLまたはアノテーションを使用して、インターフェイスとJavaのPOJO(プレーンオールドジャワオブジェクト)をデータベースのレコードにマッピングします。
MyBatisインターセプターの紹介
MyBatisはプラグイン機能を提供します。プラグインと呼ばれますが、実際にはインターセプター機能です。 MyBatisを使用すると、マッピングされたステートメントの実行中に特定の時点でコールを傍受できます。 MyBatisは、このインターフェイスを実装することにより、インターセプターインターフェイスを提供します。独自のインターセプターを定義できます。
MyBatisは、デフォルトで4種類のメソッドを呼び出します。
1。
2。ParameterHandler(getParameterObject、setParameters)
3. ResultseThandler(Handleresultsets、handleOutputParameters)
4.StatementHandler(準備、パラメーター化、バッチ、更新、クエリ)
上記の4はすべて構成方法です。これらのメソッドは、MyBatisの操作で実行されます(追加、削除、変更、およびクエリ)。実行の順序は、エグゼキューター、パラメーターハンドラー、結果の人、およびStatementHandlerです。
インターフェイスの定義は次のとおりです。
これら3つの方法の中で、プラグインはプロセッサの構築に使用され、インターセプトはプロキシクラスの処理に使用され、SetProperties用語インターセプタープロパティ設定が使用されます。
プラグインクラスは、InvocationHandlerインターフェイスを実装し、JDK独自の動的プロキシクラスを返します。プラグインのラップメソッドの場合:
現在のターゲットオブジェクトに傍受する必要があるインターフェイスがあるかどうかを判断します。そうでない場合は、ターゲットオブジェクト自体を返し、ある場合はプロキシオブジェクトを返します。
プロキシオブジェクトのInvocationHandlerはプラグインです。ターゲットオブジェクトがインターフェイスメソッドを実行すると、プロキシオブジェクトを介して実行される場合、rikecolocationhandlerの呼び出しメソッドが呼び出されます。これは、プラグインの呼び出しメソッドです。
現在実行されているメソッドが傍受する必要がある定義されたメソッドである場合、ターゲットオブジェクト、実行するメソッド、およびメソッドパラメーターが呼び出しオブジェクトにカプセル化され、カプセル化された呼び出しが現在のインターセプターのインターセプトメソッドにパラメーターとして渡されます。傍受する必要がない場合、現在の方法は直接呼び出されます。
GetSignAtureMapメソッド用
getSignAtureMapは、最初にインターセプトのインターセプト注釈を取得し、それを通過して型属性を取得し、次にこのタイプに基づいてメソッド属性とargs属性を使用してメソッドを取得し、最後に型キーと値セット<メソッド>を使用してマップを返します。例:executor.classの更新方法のフィルタリングは、マッピングステートメントとメソッドメソッドに対応するパラメーターを使用して、executroとしてのキーとメソッドインスタンスとしての値を生成します。
インターセプターの構成可能性: