[JAVA] Schreiben Sie, was Sie nach einem halben Jahr mit mybatis gedacht haben
Was ist Mybatis?
- https://github.com/mybatis/mybatis-3
Es ist eine Art OR-Mapper für Java und verfügt über die folgenden Funktionen.
- Schreiben Sie SQL in eine Annotations- oder XML-Datei
- Einfache Anwendung auf nicht normalisierte Legacy-Systeme
- Einfach zu optimierendes SQL, daher ist es einfach, es auf Systeme anzuwenden, auf denen DB tendenziell einen Leistungsengpass darstellt
Es ist ein halbes Jahr her, seit ich es in dem Projekt verwendet habe, für das ich verantwortlich bin, also werde ich die guten Punkte und Probleme aufschreiben.
guter Punkt
Die für den SQL-Zugriff verwendete Klasse ist reduziert
Für JDBC
- Verwenden Sie als Versprechen die folgenden Klassen
- DataSource
- Connection
- PreparedStatement
- ResultSet
- Sie müssen daran denken, Coneection, PreparedStatement und ResultSet zu schließen, nachdem der SQL-Ausstellungsprozess abgeschlossen ist.
Für Mybatis
- Die folgenden zwei Bibliotheken werden für den SQL-Zugriff verwendet
- SqlSessionFactory
- SqlSession
- Nur SqlSession kann geschlossen werden
- Natürlich ist es nicht erforderlich, getValue () von ResultSet zu erhalten und auf das Objekt zu setzen
Kann SQL in XML schreiben
Beim Zusammenstellen von SQL in Java
StringBuffer sql = new StringBuffer();
sql.append("select * from table ");
sql.append("where id=? ");
sql.toString();
- Manchmal möchte ich nur SQL extrahieren und von Workbench oder pgAdmin ausführen, was sehr ärgerlich ist.
Für Mybatis Mapper XML
<select id="selectPerson" parameterType="int" resultType="hashmap">
SELECT * FROM PERSON WHERE ID = #{id}
</select>
- Da es als Inhalt des XML-Tag-Elements geschrieben werden kann, ist es viel einfacher, nur hier auszuschneiden und es für eine Weile auszuführen.
SQL ist vollständig von der Logik getrennt (Java-Datei)
- Daher ist es einfach, die Anzahl der SQL- und Logikschritte getrennt zu zählen.
- In unserem Produkt hat SQL so viele Schritte wie Logik! DB Ghost System! Sie können Masochismus machen
Schlechter Punkt
Da es sich um XML handelt, kann die Refactoring-Funktion von Eclipse nicht verwendet werden.
- Wenn Sie den Namen der Modellklasse ändern möchten, müssen Sie die Quelle durchsuchen ... und so etwas wie eine Skriptsprache ausführen.
Da es sich um XML handelt, kann keine Abdeckung erhalten werden
- In unserem Projekt verwenden wir Jacoco, um die Abdeckung zu messen, aber natürlich können wir die Abdeckung in Mapper-XML-Dateien nicht messen.
- In XML können Sie eine if-Anweisung schreiben, die nur dann eine where-Klausel hinzufügt, wenn ein Wert angegeben wird, aber ich weiß nicht, ob sie all dies abdeckt.
Zusammenfassung
- Ich habe nicht viel Einsicht, aber ich bin im Allgemeinen mit mybatis zufrieden
- Warum nicht bei der Pflege einer Legacy-App berücksichtigen?