MyBatis 2 MyBatis よくある面接の質問

マイバティスとは?

MyBatis は、カスタマイズされた SQL、ストアド プロシージャ、および高度なマッピングをサポートする、セミ ORM (オブジェクト リレーショナル マッピング) フレームワークである優れた永続レイヤー フレームワークです。MyBatis は、ほぼすべての JDBC コードを回避し、パラメーターを手動で設定して結果セットを取得します。MyBatis は、単純な XML または注釈を使用して、ネイティブ型インターフェイスと Java POIO (プレーン オールド Java オブジェクト、プレーン オールド ラバ オブジェクト) をデータベース内のレコードとして構成およびマップできます。

2 ORMとは

ORM (Object Relational Mapping)、オブジェクト リレーショナル マッピングは、リレーショナル データベースのデータと単純な Java オブジェクト (POIO) の間のマッピング関係を解決する技術です。簡単に言うと、ORM は、オブジェクトとデータベース間のマッピングを記述するメタデータを使用して、プログラム内のオブジェクトをリレーショナル データベースに自動的に永続化します。

3 Mybatis が半自動 ORM マッピング ツールであるのはなぜですか? それと全自動の違いは何ですか?

Hibernate は全自動の ORM マッピング ツールです. Hibernate を使用して関連付けられたオブジェクトまたは関連付けられたコレクション オブジェクトをクエリする場合、オブジェクト関係モデルに従って直接取得できるため、完全に自動化されています。

Mybatis が関連付けられたオブジェクトまたは関連付けられたコレクション オブジェクトをクエリする場合、手動で sq を記述して完了する必要があるため、半自動 ORM マッピング ツールと呼ばれます。

従来の JDBC 開発における 4 つの問題

  • データベース接続オブジェクトを頻繁に作成および解放すると、システム リソースが無駄になり、システム パフォーマンスに影響を与える可能性があります。この問題は、接続プールを使用することで解決できます。ただし、jdbc を使用するには、接続プールを自分で実装する必要があります。

  • sql文の定義やパラメータ設定の結果セット処理にはハードコードがあります。実際のプロジェクトでは、SQL ステートメントが変更される可能性が高く、変更があった場合は、Java コードを変更する必要があり、システムを再コンパイルして再公開する必要があります。メンテナンスが容易ではありません。

  • 準備されたステートメントを使用してパラメーターを占有シンボルに渡すことはハードコーディングされています。これは、SQL ステートメントの where 条件が必ずしも確実であるとは限らず、多かれ少なかれ存在する可能性があり、SQL を変更するためにコードを変更する必要があるため、システムは維持するのは容易ではありません。

  • 結果セットの処理に重複コードがあり、面倒です。Javaオブジェクトにマッピングできると便利です。

5. JDBC プログラミングの欠点は何ですか? MyBatis はこれらの問題をどのように解決しますか?

  1. データベース・リンクの頻繁な作成と解放は、システム・リソースの浪費を引き起こし、システム・パフォーマンスに影響を与えます. データベース接続プールを使用すると、この問題を解決できます.
    解決策: mybatis-config.xml でデータ リンク プールを構成し、接続プールを使用してデータベース接続を管理します。
  2. コード内に Sq 文が書かれているため、コードの保守が難しく、実際の sq の適用は大きく変わる可能性があり、sq| の変更は Java コードを変更する必要があります。
    解決策: ××××mappe.×ml ファイルに Sq 文を構成し、Java コードから分離します。
  3. SQL文のwhere条件は必ずしもそうではなく、多かれ少なかれあり、プレースホルダーはパラメータに1つずつ対応する必要があるため、パラメータをSQL文に渡すのは面倒です。
    解決策: Mybatis は自動的に Java ペアを SQL ステートメントにマップします。
  4. 結果セットのパースが面倒、sqlの変更でパースコードの変更、パース前にパースの経験が必要、データベースのレコードをpojoオブジェクトにカプセル化できるとパースが便利。
    解決策: Mybatis は自動的に SQL 実行結果を Java オブジェクトにマップします

Mybatisの6つのメリットとデメリット

利点
従来のデータベース アクセス テクノロジと比較して、ORM には次の利点があります。

  • SQL ステートメントに基づくプログラミング。非常に柔軟で、アプリケーション プログラムやデータベースの既存の設計に影響を与えることはありません. SQL は xml で記述されているため、プログラム コードから sq| を分離し、統合管理を容易にします. XML タグを提供し、動的 ​​SQL ステートメントの記述をサポートします.そして再利用することができます
  • JDBC と比較して、コード量を 50% 以上削減し、JDBC の多くの冗長コードを排除し、手動で接続を切り替える必要がありません。
  • 様々なデータベースとの互換性が非常に良い(MyBatisはJDBCを使用してデータベースに接続するため、JDBCがサポートしているデータベースがMyBatisでサポートされている限り)
  • オブジェクトとデータベース間の ORM フィールド関係マッピングをサポートするマッピング タグを提供する; オブジェクト リレーショナル コンポーネントのメンテナンスをサポートするオブジェクト リレーショナル マッピング タグを提供する
  • Springとうまく統合できる

欠点

  • SQL ステートメントを作成する作業負荷は比較的大きく、特に多くのフィールドとテーブルがある場合は、開発者が SQL ステートメントを作成するための特定の要件があります。
  • SQL はデータベースを自由に変更できません

MyBatis フレームワークの 7 つの適用シナリオ

  • MyBatis は SQL 自体に焦点を当てており、十分に柔軟な DAO レイヤー ソリューションです。
  • MyBatis は、インターネット プロジェクトなど、高いパフォーマンスが必要なプロジェクトや、より多くの変更が必要なプロジェクトに適しています。

MyBatis プログラミングの 8 つのステップとは?

ここに画像の説明を挿入

ナイン、MyBatisの動作原理について教えてください

ここに画像の説明を挿入

10 MyBatis の機能アーキテクチャとは?

JDBC API を使用すると、ユーザーはあらゆる形式の表形式データ、特にリレーショナル データベースに格納されたデータにアクセスできます。
ここに画像の説明を挿入

イレブン MyBatis のフレームワーク設計は?

ここに画像の説明を挿入
ここに画像の説明を挿入

12 なぜプリコンパイルが必要なのですか

データベース管理システム (データベース管理システム)
ここに画像の説明を挿入

13 Mybatis にはどのような Executor がありますか? それらの違いは何ですか?

ここに画像の説明を挿入

Mybatis で使用する Executor を指定する方法は?

ここに画像の説明を挿入

Mybatis は遅延読み込みをサポートしていますか? サポートされている場合、どのように実装されていますか?

ここに画像の説明を挿入

#{} と ${} の違い

ここに画像の説明を挿入

17 あいまいクエリのようなステートメントの書き方

ここに画像の説明を挿入

マッパーで複数のパラメーターを渡す方法

ここに画像の説明を挿入

Nineteen Mybatis バッチ操作の実行方法

ここに画像の説明を挿入
ここに画像の説明を挿入

20 生成された主キーの取得方法

ここに画像の説明を挿入

21. エンティティ クラスの属性名がテーブルのフィールド名と異なる場合はどうすればよいですか?

ここに画像の説明を挿入

22. Mapper の書き方は?

ここに画像の説明を挿入

23 MyBatis インターフェースバインディングとは? どのような実装がありますか?

ここに画像の説明を挿入

24. MyBatis のマッパー インターフェースを使用する際の要件は何ですか?

ここに画像の説明を挿入

25 のベスト プラクティス (通常は Xml マッピング ファイル) は、それに対応する Dao インターフェイスを記述します。この Dao インターフェイスの動作原理は何ですか? パラメータが異なる場合、Dao インターフェイスのメソッドをオーバーロードできますか?

ここに画像の説明を挿入

26 Mybatis の Xml マッピング ファイルで、異なる Xml マッピング ファイルの ID を繰り返すことはできますか?

ここに画像の説明を挿入

27 は、Mybatis の Xml マッピング ファイルと Mybatis の内部データ構造の間のマッピング関係を簡単に説明していますか?

ここに画像の説明を挿入

28 Mybatis はどのように SQL 実行結果をターゲット オブジェクトとしてカプセル化し、それを返しますか? マッピング形式とは?

ここに画像の説明を挿入

Twenty-nine Xml マッピング ファイルには、一般的な select|insert|updae|delete タグの他に、どのようなタグがありますか?

ここに画像の説明を挿入

30 Mybatis マッピング ファイルで、A タグが include によって B タグのコンテンツを参照する場合、B タグは A タグの後に定義できますか、それとも A タグの前に定義する必要がありますか?

ここに画像の説明を挿入

31 MyBatis は 1 対 1 と 1 対多をいくつかの方法で実装していますが、操作方法は?

ここに画像の説明を挿入

32 Mybatis は Enum 列挙型クラスをマップできますか?

ここに画像の説明を挿入

33 Mybatis 動的 SQL は何をしますか? どのような動的 SQL がありますか? 動的SQLの実行原理を簡単に説明できますか?

ここに画像の説明を挿入

34 Mybatis はどのようにページ付けしますか? ページネーションプラグインの原理は何ですか?

ここに画像の説明を挿入

35 は、Mybatis プラグインの動作原理とプラグインの書き方を簡単に説明しています。

ここに画像の説明を挿入

36 個の Mybatis の第 1 および第 2 レベルのキャッシュ

crudとは、計算処理を行う際の増加(Create)、読み込み(Retrieve)、更新(Update)、削除(Delete)を指します。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_33417321/article/details/121480037