MyBatis3 を使ったことがある人は、なぜ MyBatis の Mapper インターフェースには実装クラスがないのに、直接使用できるのかと疑問に思うかもしれません。
それは、MyBatis が Java ダイナミック プロキシによって実装されたインターフェイスを使用しているためです。
ここでは原理を説明するための簡単な例を示しますが、これは MyBatis に完全に固有のものではありません。このアイデアは他の場所にも適用できます。
ここでは、invoke
方法简单说说MyBatis的实现原理,在该方法中,我们通过Method能够获取接口和方法名,接口的全名相当于MyBatis XML中的namespace
,方法名相当于具体一个方法中的id
。也就是说通过动态代理后,可以通过SqlSession
来通过namespace.id
メソッドに対応するメソッドを呼び出します。インターフェイスを使用するとより便利ですが、間接的な方法になります。
このファクトリ クラスは、任意のインターフェイスの動的なプロキシ クラスを生成できます。
一般的に、動的エージェントに関して言えば、私たちの通常の使用法は、トランザクション、ログ、またはメソッドの実行効率の記録やその他のアプリケーションを扱うことです。これらはすべて、実装前または実装後のクラス メソッドの特別な処理です。
この記事を通じて、実際に別のアプリケーションの方向性がわかります。つまり、クラスを実装する必要がなく、MyBatis はこのメソッドを使用してメソッドの呼び出しを容易にします。このアイデアを他のアプリケーションで使用して、より良いデザインを作成できるかもしれません。原文:
以上が[転送] MyBatisインターフェースの簡単な実装原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。