MyBatisのソースコード解析:内部MapperMethodで静的クラスMethodSignatureの役割

MethodSignature分析

  実行すべきパラメータを取得する3 MethodSignature役割MapperMethodクラス名を提供し、プロセスパラメータ@Param注釈を取得、@MapKey(以下で@MapKey役割が言及される)、メソッドの戻り型の付いたパラメータを取得、マーク必要な場合、フラグ操作を選択。ここMethodSignatureのすべての属性があります。

  • 民間最終ブールreturnsMany; //複数値クエリかどうか
  • 民間最終ブールreturnsMap;マップかどうかを//クエリ
  • 民間最終ブールreturnsVoid、無効かどうかを//クエリ
  • 民間最終ブールreturnsCursor; //カーソル問合せの場合
  • 民間最終クラス戻り値の<?>; //戻り値の型
  • 民間最終文字列mapKey; //はmapKeyの値を取得
  • 民間最終整数resultHandlerIndex。
  • 民間最終整数rowBoundsIndex。
  • 民間最終ParamNameResolver paramNameResolver; //パラメータパーサ

  MyBatisのが実装三種類提供し、コンストラクタは、最初の戻り型、返すパラメータパーサーの種類を見つけるためにmapperInterface自体と親の全てとインターフェースのすべてのタイプを取得した基準値を取得し、次のコードを遵守のためには、ParameterizedTypeをTypeVariable、GenericArrayTypeの値のタイプは、クエリ、空隙クエリ、マップクエリ、カーソルクエリ、多値クエリを行われるかを決定するために、後続の選択によって返された場合、これはmapperMethod(中exeuteを行い、関連するプロパティにマーキングする)方法意志裁判官。マッパーコンストラクタメソッドも実行されるようにチェックマーク@MapKey注釈がある場合、この結果は、戻り値の型が地図であることを意味している場合、。

1     公共 MethodSignature(構成設定、クラス<?> mapperInterface、メソッド法){
 2          // 解析返回的类型は、ParameterizedType、TypeVariable、GenericArrayType 
3        種類resolvedReturnType = TypeParameterResolver.resolveReturnType(方法mapperInterface)。
4        もし(resolvedReturnType のinstanceofクラス<?> ){
 5           .returnType =(クラス<?> )resolvedReturnType。
6        } そう であれば(resolvedReturnType のinstanceof は、ParameterizedType){
 7          この .returnType =(クラス<?>)((は、ParameterizedType用)resolvedReturnType).getRawType();
 8        } {
 9。         この .returnType = Method.getReturnType();
 10        }
 11。       この .returnsVoid = ボイドクラス .equals(この.returnType);
 12である       // かどうかコレクションまたは配列型
13は、       この .returnsMany = configuration.getObjectFactory()IsCollection(。この .returnType)|| この.returnType.isArray();
 14        //は、カーソルのタイプかどうかを判断する
15         .returnsCursorカーソルを= クラス.equals(この.returnType);
 16        // 取得MapKey注釈
17。       この .mapKey = getMapKey(方法)
 18である       //があるか否かmapkey NULLを判定する
。19        この = .returnsMapをこの!.mapKey = NULL ;
 20は       この .rowBoundsIndex = getUniqueParamIndex(方法、RowBounds。クラス)、
 21は       この .resultHandlerIndex = getUniqueParamIndex(メソッド、ResultHandler クラス);
 22である       // 初期化パラメータ名パーサ
23は、       この .paramNameResolver = 新しい新ParamNameResolver(構成方法)。
24      }

 

おすすめ

転載: www.cnblogs.com/zhengzuozhanglina/p/11223568.html
おすすめ