序文
MyBatis フレームワークで使用される 5 つのデザイン パターンは次のとおりです:1. ビルダー モード (ジェネレーター モード)。 2. 工場出荷時モード。 3. シングルトンモード。 4. エージェントモード。 5. アダプターモード。
1. ビルダーモード(ジェネレーターモード)
MyBatis 環境の初期化プロセス中に、SqlSessionFactoryBuilder
は XMLConfigBuilder
read を呼び出します。
すべてMyBatisMapConfig.xml
およびすべて ファイル、MyBatis 操作のコア オブジェクトを構築します *Mapper.xml
Configuration
オブジェクトを取得し、Configuration
オブジェクトをパラメータとして使用して SqlSessionFactory
ペア を構築します。
象。
2. ファクトリーモード
-
たとえば、MyBatis では
SqlSessionFactory
ファクトリ パターンが使用されています。ファクトリにはそれほど複雑なロジックはなく、 シンプルなファクトリ パターンです。 -
SqlSession
MyBatis の作業の中核インターフェイスと見なすことができます。このインターフェイスを通じて、 SQL ステートメント、マッパーの取得、トランザクションの管理。 MySQL に接続する オブジェクトと似ています。Connection
3. シングルトンモード
-
MyBatis ではシングルトン モードが 2 か所、
ErrorContext
とLogFactory
で使用されます。そのうちErrorContext
これは、各スレッドのスコープ内でスレッドの実行環境エラー情報を記録するために使用されるシングルトンであり、 は、プロジェクトに設定されたログ オブジェクトを取得するために使用されます。LogFactory
は、MyBatis 全体に提供されるログ ファクトリーです。
public class ErrorContext {
/**
* 每个线程各自的数据
*/
private static final ThreadLocal<ErrorContext> LOCAL = new ThreadLocal<>();
private ErrorContext() {
}
public static ErrorContext instance() {
ErrorContext context = LOCAL.get();
if (context == null) {
context = new ErrorContext();
LOCAL.set(context);
}
return context;
}
}
-
コンストラクターはプライベートに変更され、静的なローカル インスタンス変数とインスタンス変数を取得するメソッドが用意されています。インスタンスを取得するメソッドでは、まず空かどうかを判断し、空の場合は最初に作成し、構築されたオブジェクトを返します。 。
-
ここで唯一興味深いのは、LOCAL の静的インスタンス変数が
ThreadLocal
で変更されていることです。これは、 が各スレッドに属していることを意味します。データを取得し、instance()
メソッドで、まずこのスレッドのインスタンスを取得します。取得できない場合は、スレッドの一意のErrorContext
を作成します。
4. エージェントモード
プロキシ モードは、MyBatis のコアで使用されるモードと考えることができます。このモードがあるからこそ、 Mapper.java
インターフェイス
5.アダプターモード
-
MyBatis ロギング パッケージには、Log インターフェイスがあります。
このインターフェイスは、MyBatis によって直接使用されるロギング メソッドを定義します。具体的に Log インターフェイスを実装するのは誰ですか?
-
MyBatis はさまざまなログ フレームワーク実装を提供します。これらの実装はすべて、この Log インターフェイスで定義されたインターフェイス メソッドと一致します。最終的に すべての外部ログ フレームワークの MyBatis ログ パッケージへの適応を実装します。