Der Unterschied zwischen MyBatis und Ibatis:
1. MyBatis implementiert die Schnittstellenbindung und macht es bequemer, <br /> in Ibatis2.x zu verwenden , wir müssen angeben, welche XML -Zuordnungsdatei in der DAO -Implementierungsklasse entspricht.
MyBatis implementiert die Bindung der DAO -Schnittstelle und der XML -Zuordnungsdatei und generiert automatisch die spezifische Implementierung der Schnittstelle für uns, wodurch es einfacher zu verwenden und bequemer wird.
Dies kann als die wichtigste Verbesserung der MyBatis sein.
Beachten:
Obwohl MyBatis die Verwendung der Annotationskonfiguration direkt in der Schnittstelle unterstützt, um die Konfiguration zu vereinfachen,
Es wird jedoch dringend empfohlen, die XML -Konfigurationsmethode noch zu verwenden. Schließlich ist die Konfigurationsmethode der Annotation begrenzt und der Code zu invasiv. Nur mit der XML -Konfigurationsmethode können die Vorteile von myBatis reflektiert werden
2. Die Verbesserung der Objektbeziehungskartierung ist effizienter <br /> Ich glaube, dass viele Freunde, die Ibatis2.x verwenden, die Beziehung zwischen den Objekten durch Ibatis -XML -Zuordnungsdatei nicht erkennen. In der Tat besteht keine Notwendigkeit, dies zu tun, da Ibatis2.x "Hals -Abfrage" verwendet, um die Beziehung zwischen Objekten durch die direkte Zusammenstellung von Abfragestatements zu verwirklichen, und ihre Wirkung ist die gleiche wie die Kapselung in DAO oder Service.
Diese Methode hat jedoch "N+1 Abfrageproblem".
Zusammenfassend kann das N+1 -Abfrageproblem wie folgt verursacht werden:
? Sie führen eine separate SQL -Anweisung aus, um die Ergebnisliste (dh +1) zu erhalten.
? Für jeden zurückgegebenen Datensatz führen Sie eine Abfrageanweisung aus, um die Details für jedes Laden zu laden (dh n).
Dieses Problem kann dazu führen, dass Hunderte von SQL -Anweisungen ausgeführt werden. Dies wird normalerweise nicht erwartet.
In MyBatis ist nicht nur mit der "Nacken -Abfrage" -Methode in Ibatis2.x kompatibel, sondern bietet auch eine direkte "Nackenergebnis" -Methode, die dem Abfrageled -DTO -Objekt automatisch über einen Satz SQL in das erforderliche Objekt in das erforderliche Objekt verknüpft ist.
Für bestimmte Implementierungsmethoden finden Sie im offiziellen Benutzerhandbuch von MyBatis alleine und beschreiben Sie sie hier nicht.
Tatsächlich sind die Vorteile dieser Verbesserung jedoch sehr begrenzt. Da diese Methode bei Verwendung von Paging nicht funktioniert oder der Ergebnissatz verschachtelter Objekte nicht Paging sein darf. Dies wurde im MyBatis -Framework eindeutig eingeschränkt (34 Zeilen in org.apache.ibatis.executor.ResultSet.nestresultsaThandler), und es gibt viele Fälle, in denen Pagaging in tatsächlichen Projekten erforderlich ist ...
Wenn Sie sorgfältig darüber nachdenken, kann das Eins-zu-Viele-Zuordnen nicht durch Konfigurationsdateien pageln, da die Anzahl der zu diesem Zeitpunkt abgefragten Datensätze nicht der Größe des tatsächlichen Rückgabebobjekts entspricht, aber ich verstehe nicht, warum Eins-zu-Eins-Zuordnung nicht zulässig ist. Vielleicht liegt es daran, dass eins zu eins ein Eins-zu-viele-Sonderfall ist und es beim Entwerfen des Rahmens nicht in Betracht gezogen oder schwierig ist, mit diesem Sonderfall umzugehen.
3.. MyBatis verwendet leistungsstarke Ausdrücke auf OGNL-basiertem Ausdruck, um andere Elemente zu beseitigen .
MyBatis verwendet OGNL -Ausdrücke, um die Komplexität von Konfigurationsdateien zu vereinfachen, und ist einfacher zu verwenden.
Vielleicht ist es mehr besorgt
MyBatis implementiert die Schnittstellenbindung und macht es bequemer zu verwenden.
Ibatis/mybatis 3 bietet eine neue Funktion: Annotation.