概要概要
ソースコードを使用して、マシンが認識できるコードを実行および生成でき、その機能はオープンソースソースコードを介して参照できます。
重要性
1. mybatisでのSQLの実行は、返される結果が何であるかは関係ありません。また、結果がどのように発生し、どのような処理が行われたかを知る必要があります。この原則を知っている場合にのみ、問題が発生したときに問題をよりよく理解できます。そのリンクで。
2.アプリケーションをより適切に拡張し、コードを再利用し、開発コストと時間を削減できます。
3.設計アイデアの学習は、他のアプリケーションにも適用できます。
ステップ
ソースコードを読むには、テストケースから始めることができます。ソースコードごとに、マスターによって作成されたテストケースが多数あります。マスターによって作成されたテストケースを使用して、事前クローズ機能をテストできるため、動作原理といくつかの設計アイデアを知ることができます。 。
ステップ1テストケースリクエスト
ステップ2MapperProxyオブジェクトを実行します。MapperProxyプロキシはjdk動的プロキシです。着信マッパーインターフェイスに従って、プロキシオブジェクトが動的に生成されます。プロキシオブジェクトは、InvocationHandlerインターフェイスも実装します。
ステップ3:MapperMethodクラスに移動し、コンストラクターを使用してSqlCommand静的内部クラスを初期化し、構成ファイルのメソッド署名と比較します。対応するメソッドはありますか?
ステップ4executeexecute実行されたSqlsessionを選択します
ステップ5DefaultSqlsessionと入力し、実行するエグゼキュータを選択します。最初にキャッシュエグゼキュータを選択します。キャッシュはデフォルトのシンプルエグゼキュータを選択しません。mybatisに設定がある場合は、設定されたエグゼキュータを選択し、前処理パラメータを設定します。
ステップ6クエリの宣言処理オブジェクトを入力し、結果セットを返します
プロセスの要求は次のように要約できます。テストケース要求-"MapperPrxoy(invoker)-" MapperMthod(execute)-"Sqlsession(executor.query())-" SimpleExecutor(MappedStatement.doQuery())-"StatementHandler(PreparedStatementHandler)-" ResultsetHandler->結果セットを返す
-"終わり
総括する
1. Mybatisは、jdkの動的プロキシを使用し、プログラムの実行時に特定のプロキシオブジェクトを生成し、関連するロジックを実行します。一部のロジックは、プロキシメソッドの前後に実行でき、クラスメソッドは元のクラスのロジックを変更せずに拡張できます。機能、動的プロキシは、低レベルのコードを作成するときに特に重要です
。2。物事の管理、Spring aopの原理、ログイン権限の傍受、ログの統合出力、各apiリクエストの時間のかかる統計などで広く使用されています。
3.ソースコードの調査は調査目的ではありません。動的エージェント、ファクトリモード、ビルダーモードなどのアイデアを学習し、これらの原則を使用して、プログラムの保守性、再利用性、柔軟性、および信頼性を高める必要があります。