Mybatis と Ibatis の違い:
1. Mybatis は、より使いやすいインターフェース バインディングを実装します。
ibatis2.x では、DAO 実装クラスに対応する XML マッピング ファイルを指定する必要があります。 XML マッピング ファイルのバインディングにより、インターフェイスの特定の実装が自動的に生成され、使用がより簡単かつ便利になります。
これはMybatisの最も重要な改善点と言えます。
Mybatis は、設定を簡素化するためにインターフェース内でアノテーション設定を直接使用することをサポートしていますが、
引き続き XML 設定を使用することを強くお勧めします。結局のところ、アノテーションの構成方法では機能が制限されており、コードも煩雑です。 XML 構成メソッドを使用することによってのみ、Mybatis の利点が反映されます
ibatis2 を使用している友人も多いと思います。実際、ibatis2.x は「ネストされたクエリ」メソッドを使用して、クエリ ステートメントの直接アセンブリを通じてオブジェクト間の関係を実現するため、その効果は DAO または Service にカプセル化するのと同じです。
ただし、この方法には「N+1クエリ問題」があります。
一言で言えば、N+1 クエリの問題は次のような原因で発生する可能性があります:
結果リスト (つまり +1) を取得するために 1 つの SQL ステートメントを実行しました。
? 返されたレコードごとにクエリを実行して、それぞれの詳細をロードします (N です)。
この問題により、数百または数千の SQL ステートメントが実行されます。これは通常は予期されません。
具体的な実装方法については、Mybatis 公式ユーザーマニュアルを参照してください。ここでは説明しません
よく考えてください、ペアこの時点でクエリされるレコードの数が実際に返されるオブジェクトのサイズと等しくないため、マルチマッピングでは構成ファイルをページングできないのは事実ですが、1 対 1 マッピングがなぜそうでないのかは明らかではありません。許可された。おそらく、1 対 1 は 1 対多の特殊なケースであり、フレームワークを設計するときに、この特殊なケースを処理することが考慮されていなかったか、困難だったからでしょう。
struts2 に慣れている人は、OGNL 式に慣れていないはずはありません。
MyBatis は、構成ファイルの複雑さを簡素化し、使いやすくするために OGNL ベースの式を使用します。簡潔。
Mybatis がより使いやすいインターフェース バインディングを実装しているということです。
iBatis/MyBatis 3 は、新しい機能である注釈を提供します。