MyBatisのソース解析モジュール--binding

チーン

起動時SQL文関連マッパーインターフェースとMapper.xmlファイルは、エラーを検出するために
、図に示されるそのUMLダイアグラムを。

mapperRegistryマッパーインターフェイスであり、その目的は、プロキシオブジェクトファクトリのレジストリである
MapperProxyFactoryプロキシオブジェクトを作成します

詳細なプロセス

  1. MyBatisのは、コンフィギュレーション情報をオブジェクトにマッピングされているすべての設定を初期化します
  2. ConfigurationオブジェクトmapperRegistryの現在の使用記録するフィールドmapperRegistryオブジェクトを
  3. XMLファイルとアノテーション情報マッパーインタフェースを読んで、呼び出しがmapperRegistry.addMapper()埋めるknownMappersためのコレクション、クラスオブジェクトマッパーインタフェースのためのキー、値MapperProxyFactory、目標を
  4. あなたは、SQL文を実行する必要がある場合にはmapperRegistry.getMapper()対応するが削除されますMapperProxyFactoryプロキシオブジェクトを作成するオブジェクトをMapperProxy(JDKのダイナミックプロキシ)
  5. MapperProxyinvoke()マッパーの方法は、パッケージ情報とインタフェースメソッドに対応するSQL文を取得しますMapperMethodオブジェクトをし、呼び出しはMapperMethod.execute()SQL文を実行します

フォルダの方法

  1. SqlCommandオブジェクトのの
    名前フィールドのSQLステートメント(インターフェースのメソッド名)、タイプフィールドレコードSQLステートメント・タイプの名前を記録
  2. ParamNameResolverの
    名前フィールド(のSortedMap型)記録位置インデックスとパラメータ名、キーインデックスリストパラメータの間の関係を、対応するパラメータのリスト、パラメータの値は、名前であり、ない@Parm注釈がインデックス名として使用されている場合

RowBoundsまたはパラメータパラメータのResultHandlerタイプがある場合は、パラメータのこれらの2つのタイプが記録またはコレクションに名前を付けるためにスキップ(マップデータを追加しません)が、インデックスが成長し、そして(名前とインデックスを使用して)、デフォルトの名前ですされていませんmap.size()によって名前を取得するには、それほどの数であり、インデックスの例名前ではなくなります

ParamNameResolver.gerNamedParams()-変換名パラメーター配列(キー)パラメータ引数に渡されたユーザパラメータ値(値)が達成されるフォームの
名前-名前フィールド(タイプのSortedMap)から指標を削除entity用いるentity.value鍵として(パラメータ名)、args[entity.key]すなわち、パラメータの値として値

  1. MethodSignatureの
    インターフェイスマッパーに関する情報で定義されたカプセル化方法
	//返回值是否是collection或数组类型
	private final boolean returnsMany;
	//返回值是否是map类型
    private final boolean returnsMap;
    //返回值是否是空
    private final boolean returnsVoid;
    //返回值类型
    private final Class<?> returnType;
    //返回值是map的话key的列名
    private final String mapKey;
    //参数列表中resultHandler类型的位置(第几个参数为resultHandler类型)
    private final Integer resultHandlerIndex;
    //第几个参数为rowBounds类型
    private final Integer rowBoundsIndex;
    //方法对应的ParamNameResolver对象
    private final ParamNameResolver paramNameResolver;

MapperMethod.executor()DB操作は、SQLの異なる種類に応じて完了しますSQLSESSIONメソッドの呼び出し、
rowCountResult()戻り値はマッパーインタフェースに変換され、挿入文が戻るように処理するint型の値を

公開された98元の記事 ウォンの賞賛9 ビュー10000 +

おすすめ

転載: blog.csdn.net/Mutou_ren/article/details/103036918