MyBatisのフレームワーク--mybatisインタビューの概要

 

超格安の友人を助けるために、何か物事を販売し、広告を作成しますよ []衣服、靴など、工場直接出荷、市場価格よりも低くなっています!! 3-7倍の市場価格よりも一般的に安価なブランド品[は]あなたが興味を持っている場合、あなたは、画面の2次元コードの下をスキャンすることができ、感謝の注意!

マイクロ手紙

  • #{}との違いは何ですか{} $です

        プロパティファイル$ {}は例えば$ {ドライバ}としてタグプロパティ値と内部SQL、静的テキスト置換、はcom.mysql.jdbc.Driverため静的であることができるプレースホルダ変数です。#{}は、パラメータプレースホルダ、MyBatisのか?番号を持つSQL#{}内の、パラメータ設定方法は、PreparedStatementのSQL SQLに順次実行?パラメータセット番号プレースホルダの前に使用されるであろうSQLですそのようなps.setIntオブジェクトパラメータ相当param.getItem()のgetName()から物体の反射値を取得した項目名の属性値を使用して(0、parameterValue)、#{} item.name方法。

  • XMLマッピングファイル、共通に加えて選択|挿入| updae |ラベルを削除するよりも、どのようなラベルを?

        他の多くのタグがありますが、<このresultMap>、<なparameterMap>、<SQL>、<include>の、<selectKey>、プラス9個の動的SQLタグ、トリム|場所|セット| foreachの|場合|選択|とき|そうでない場合|バインドSQL断片の<SQL>タグのような、フラグメントはタグ、<selectKey>ラベルの主キーの生成方法増分をサポートしていません<include>のSQLを導入しました。

  • 実際、通常はXMLマッピング・ファイルでは、ダオに対応するインタフェースを記述します、私が求めることができる、インターフェースの動作原理は、ダオは何かありますか?方法、パラメータのDAOインターフェイスが異なる、方法は、それをリロードすることができますか?

        ダオインターフェースは、多くの場合、SQLに渡されたインタフェースメソッド内のパラメータは、インターフェイスのマッパーインタフェースの完全修飾名は、インターフェイスメソッドの名前、名前空間の値マッピングファイルで、値がIDマッピングファイルMappedStatementであると言われていますパラメータ。com.mybatis3.mappers.StudentDao.findStudentByIdは、一意の名前空間を見つけることができる:メソッド呼び出しインタフェース、インタフェース名+文字列連結キー値として完全に修飾されたメソッド名は、例えば、一意に配置MappedStatementかもしれない実装クラスインターフェースマッパー、 ID = findStudentById com.mybatis3.mappers.StudentDaoはMappedStatement未満です。MyBatisの中で、それぞれ、<挿入>、<更新>、<削除>タグはMappedStatementオブジェクトに解決され<選択>。

        ポリシーを維持するために、完全修飾名+メソッド名を見つけることですので、インターフェイスメソッドでダオは、オーバーロードされていません。

        DAOインターフェイスがJDKの動的プロキシはプロキシプロキシオブジェクトDAO JDK動的プロキシインタフェースの生成を実行MyBatisのに使用される動作であり、SQL MappedStatementの実装に有利な方法インターフェイスプロキシオブジェクトプロキシインターセプトは、SQL実行結果が返され、その後、表現しました。

  • MyBatisのは、どのようにページングされますか?原則として改ページプラグインは何ですか?

        MyBatisのRowBounds直接物理ページ内の物理ページのパラメータで記述することができるResultSetの実行結果をページングするために設定されているページング、はなく、物理ページを使用してオブジェクトが達成されるSQL関数は、物理ページのタブウィジェットを完了するために使用することができます。

        基本原理は、提供されるプラグインタブMyBatisのプラグインインターフェイスを使用するカスタム・プラグインを達成するために、挿入方法内で実行されるSQL切片傍受し、SQLを書き換え、方言方言に従って、物理ページング・パラメータに対応する文と、物理ページを追加です。

たとえば:インターセプトSQLに、学生を上書きSELECT * FROM:選択トンを*トン限度0,10(学生SELECT * FROM)から。

  • MyBatisのは、一括挿入を実行するには、データベースの主キーのリストを返すことができますか?

        エネルギー、JDBC缶、MyBatisの確かにすることができます。

  • MyBatisの動的SQLは何しているのですか?動的SQLは何ですか?動的SQLの実行の缶簡単に原理はないですか?

        MyBatisの動的SQLは、XMLマッピングファイル、ラベル、完全なロジックおよび動的なスプライシングSQL関数の形で書き込み、動的にSQL、MyBatisのの提供で私たちを聞かせすることができます9つの動的SQLタグトリム|場所|セット| foreachの|場合|選択|とき|そう|バインド。

        その実行の原理、動的SQL関数を完了するために、動的スプライシングSQL式の値に応じて、OGNL SQLパラメータオブジェクトを使用して、式から算出される値。

  • MyBatisのは、ターゲットオブジェクトとリターンの結果がどのようにSQLパッケージを実行することですか?マッピングの形式は何ですか?

        最初は、列名とオブジェクトのプロパティの名前との間のマッピングを定義する、<このresultMap>タグを使用することです。第二の機能は、列エイリアス名は、例えばT_NAME AS NAMEなどのオブジェクトのプロパティとして書き込まれ、別名SQLカラムを使用することで、一般的なオブジェクトのプロパティは、小文字、名前であるが、列名はケース非感受性である、MyBatisのは、列名のケースを無視しますMyBatisのが正常に動作することができますようにスマートな発見、対応するオブジェクトのプロパティ名、あなたも、T_NAMEなどの名前を書くことができます。

        あなたが名前や属性名、リフレクションを通じてオブジェクトを作成MyBatisの間の列マッピングを持っていたら、個別のオブジェクトとリターンのプロパティに割り当てられた使用の反射が、これらのプロパティは、マッピング関係を見つけることができない、割り当てを完了することができません。

  • かどうかはMyBatisのは、遅延ロードをサポートしていますか?もしそうなら、その原理は達成するためには何かありますか?

        MyBatisの協会が唯一の関連付けが1を参照し、関連するオブジェクトのコレクションと関連オブジェクトのコレクションを遅延ロードをサポートし、コレクションには、多くのクエリを指します。偽| MyBatisの設定ファイルでは、あなたは=真lazyLoadingEnabled遅延読み込みを有効にするかどうかを設定することができます。

        その原理は、ターゲットメソッドの呼び出しが、そのようなコールa.getB()。関連項目GetName()などのインターセプタメソッドを、入力したときCGLIBは、ターゲットオブジェクトのプロキシオブジェクトを作成し使用することで、インターセプタのinvoke()メソッドはa.getB()があるが見つかりました。ヌル値は、それが保存されたクエリが事前SQL関連オブジェクトBに送ら分離する、Bアップクエリは、次にa.setB(B)を呼び出し、ターゲット属性値bがあり、次いでa.getB(終了).getName()メソッドを呼び出します。これは、基本的な原理遅延ロードです。

        もちろん、だけでなく、MyBatisの、ほぼすべてのHibernateのを含め、原則のための遅延ロードのサポートは同じです。

  • バッチ処理を実行する方法をMyBatisの?

        使用バッチ処理の完全なバッチ。

  • MyBatisのエグゼキュータは何ですか?それらの違いは何ですか?

        MyBatisの3つの基本的なエグゼキュータキュータ、SimpleExecutor、ReuseExecutor、バッチ処理があります。

  1. SimpleExecutor:たびに更新または選択し、ちょうどすぐにクローズされたStatementオブジェクトを実行して、Statementオブジェクトを開きます。
  2. ReuseExecutor:SQL Statementオブジェクトを見つけるための鍵は、使用上に存在するよう、アップデートを実行するかを選択し、それが使用後に、閉じないStatementオブジェクトを行い、作成するために存在するが、次の使用のために、内地図<文字列、声明を>置いていません。短い、再利用Statementオブジェクトで。
  3. バッチ処理:(選択しないで、JDBCバッチが選択をサポートしていません)更新を実行し、すべてのSQLをバッチ(addBatch())に追加され、均一な実装(のexecuteBatch())を待って、それはそれぞれ、複数のStatementオブジェクトをキャッシュStatementオブジェクトは、1がexecuteBatch()バッチによる実行1を待って、完成後addBatch()です。そして、JDBC同じバッチ。

スコープ:これらの機能の執行が厳しくスコープSQLSESSIONのライフサイクルに制限されています。

  • エグゼキュータエグゼキュータを使用するかを指定する方法をMyBatisの?

        MyBatisのプロファイルでは、デフォルトのExecutorTypeアクチュエータのタイプを指定することができ、この方法は、また、SQLSESSION DefaultSqlSessionFactory ExecutorType型パラメータを転送するために手動で作成することができます。

  • MyBatisのマッピングファイルBの内容を参照することにより、Aラベルはラベルが含まれている場合、私が求めることができる、ことができます私は、ラベルAの後ろにBのラベルを定義するか、またはAは、前のラベルで定義されなければならないこと?

        MyBatisのXML解析マップファイルを順に解析されているが、しかし、Bのラベルがまだ参照されている任意の場所に定義することができ、MyBatisのは、正確に識別することができます。

        原理は、MyBatisのAラベルの解析で、参照は、Bは、ラベル・タグを見つけましたが、タグがBに解決されていない、A-ラベルはMyBatisのは、未解決の意志ラベル、この時点では、まだ存在していない、とBを含む、ラベルの残りの部分を解析しますラベル、解決すべきすべてのラベルが完了すると、MyBatisのは再レンダリングそれが正常に行われたラベルを解決することができ、未解決のタグとマークされている、その後、再解析する時間ラベルA、Bタグがすでに存在しています、。

  • XMLマッピングファイルとMyBatisの内部データ構造の間MyBatisのマッピング関係をブリーフ?

        XML MyBatisのは、すべての構成情報は、内部のオールインワン構成のヘビー級のオブジェクトにカプセル化されます。XMLマッピングファイルでは、<なparameterMap>タグたParameterMapオブジェクトに分解され、各サブエレメントはParameterMappingオブジェクトとして解析されます。<このresultMap>タグはこのresultMapオブジェクトに分解され、各サブ要素は、オブジェクトをResultMappingとして解析されるであろう。それぞれが<選択>、<挿入>、<更新>、<削除>タグはMappedStatementオブジェクトに解決され、タグBoundSql内のSQLは、オブジェクトに解析されます。

  • なぜMyBatisの半自動ORMマッピングツール?自動でどこが異なるのですか?

        Hibernateのクエリ関連するオブジェクトまたはコレクションオブジェクトを直接オブジェクト・リレーショナル・モデルに従って得ることができるとHibernateのORMマッピングツールは、完全に自動化され、それは全自動です。完了するために手動で書き込みSQLへの必要性に関連したオブジェクトの関連するオブジェクトまたはコレクションを照会する場合やMyBatisのため、半自動ORMマッピングツールと呼ばれます。

公開された107元の記事 ウォンの賞賛184 ビュー210 000 +

おすすめ

転載: blog.csdn.net/qq_22172133/article/details/87360850