ホームページ > Java > &#&チュートリアル > Java Mybatis の初期化用に Mapper.xml マッピング ファイルを構成する方法

Java Mybatis の初期化用に Mapper.xml マッピング ファイルを構成する方法

王林
リリース: 2023-05-03 23:10:09
転載
1479 人が閲覧しました
前書き:

グローバル構成ファイルを解析した後の次のステップは、XMLMapperBuilder を通じて解析されるマッパー ファイルを解析することです。

マッパーの解析ファイル エントリ

XMLMapperBuilder の parse() メソッド:

public void parse() {
    if (!configuration.isResourceLoaded(resource)) {
      configurationElement(parser.evalNode("/mapper"));
      configuration.addLoadedResource(resource);
      bindMapperForNamespace();
    }

    parsePendingResultMaps();
    parsePendingCacheRefs();
    parsePendingStatements();
  }
ログイン後にコピー
  • 現在のマッパー ファイルがロードされていない場合は、configurationElement() メソッドを呼び出して、 Mapper ファイルを解析します

  • Configuration.loadedResources コレクションに追加して繰り返しロードを防止します

  • #Mapper ファイルに対応する Mapper インターフェイスを取得して登録しますit

  • 解析失敗の処理<resultMap>tags

  • 解析失敗の処理<cache-ref&gt ;tags

  • 解析に失敗した SQL ステートメントの処理

XMLMapperBuilder クラスのconfigurationElement() メソッドに注目します

Mapper ファイルの解析

MLMapperBuilder クラスのconfigurationElement() メソッド:

private void configurationElement(XNode context) {
    try {
      String namespace = context.getStringAttribute("namespace");
      if (namespace == null || namespace.isEmpty()) {
        throw new BuilderException("Mapper&#39;s namespace cannot be empty");
      }
      builderAssistant.setCurrentNamespace(namespace);
      cacheRefElement(context.evalNode("cache-ref"));
      cacheElement(context.evalNode("cache"));
      parameterMapElement(context.evalNodes("/mapper/parameterMap"));
      resultMapElements(context.evalNodes("/mapper/resultMap"));
      sqlElement(context.evalNodes("/mapper/sql"));
      buildStatementFromContext(context.evalNodes("select|insert|update|delete"));
    } catch (Exception e) {
      throw new BuilderException("Error parsing Mapper XML. The XML location is &#39;" + resource + "&#39;. Cause: " + e, e);
    }
  }
ログイン後にコピー
  • Mapper ファイルの名前空間属性を解析します

  • 解析 <cache-ref> タグ、このタグは他のキャッシュ キャッシュを参照するために使用されます

  • 解析 <cache> タグ、このタグは、Mybatis の 2 次キャッシュを有効にするために使用されます。1 次キャッシュはデフォルトで有効になっています。このメソッドでは、MapperBuilderAssistant クラスが解析されて、 Configuration.caches コレクションに保存されるキャッシュ。コレクションのキーは名前空間で、値は Cache object

  • Parsing<parameterMap> タグです。このタグは廃止されました。通常は、パラメータのクラス名を定義するために parameterType を使用します

  • 分析<resultMap> タグ、このタグは結果のマッピングであり、そのタグの下にあるすべてのサブタグが解析され、ResultMap オブジェクトに格納されます。具体的には、resultMap は解析後に最初に取得されます。type in、type は結果セットにマップされた Java オブジェクトであり、その後解析されますresultMap タグのサブタグ (<constructor>、<id>、<result>、<collection> およびその他のタグを含む)。これらのタグは ResultMapping オブジェクトを生成し、次のような属性を取得します。 id を拡張し、ResultMapResolver オブジェクトを構築し、ResultMap オブジェクトを作成して、Configuration.resultMaps コレクションに保存します。

  • SQL タグを解析します。このタグは定義に使用されます。繰り返しの SQL フラグメントが解析され、保存されます。 Configuration.sqlFragments

  • Parsing<select>、<insert>、<update>、<delete> およびその他の SQL ノードでは、これらのタグはこれらは XMLStatementBuilder を通じて解析される SQL ステートメントの追加、削除、変更、クエリです。最初に <include> タグが解析され、次に <selectKey&gt が解析されます。 ; タグは Configuration.keyGenerators コレクションに保存されます。最後に、LanguageDriver.createSqlSource() メソッドを使用して SqlSource オブジェクトが作成され、MappedStatement オブジェクトが構築されます。MappedStatement の sqlSource は SQL ステートメントを記録し、sqlCommandType は型を記録しますSQL ステートメントの内容。Configuration.mappedStatements コレクションの

に保存されます。

以上がJava Mybatis の初期化用に Mapper.xml マッピング ファイルを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート