Einführung in MyBatis
MyBatis ist ein hervorragendes Rahmen für Persistenzschicht, das einfache SQL -Abfragen, gespeicherte Verfahren und erweiterte Zuordnung unterstützt. MyBatis eliminiert manuelle Einstellungen fast aller JDBC -Code und -Parameter sowie die Suche in der Ergebnisse des Ergebnissatzes. MyBatis kann einfache XML oder Anmerkungen zur Konfiguration und ursprüngliche Zuordnung, Mapping -Schnittstellen und Javas Pojos (einfache alte Java -Objekte) in Datenbank in der Datenbank verwenden.
1. MyBiats foreach Tag
Foreach wird hauptsächlich beim Aufbau unter Bedingungen eingesetzt. Sie kann über eine Sammlung in SQL -Aussagen iterieren. Die Attribute des Foreach -Elements enthalten hauptsächlich Element, Index, Sammlung, Öffnen, Trennzeichen und Schließen. Element repräsentiert den Alias, wenn jedes Element in der Sammlung iteriert wird. Index gibt einen Namen an, der die Position darstellt, zu der jede Iteration während des Iterationsprozesses erreicht wird. Open repräsentiert, was mit der Aussage beginnt, Separator stellt dar, welche Symbole zwischen jeder Iteration als Trennzeichen verwendet werden, und Close repräsentiert, was mit endet. Das kritischste und fehlerhafteste Sache bei der Verwendung von foreach ist das Sammelattribut. Dieses Attribut muss angegeben werden, aber in verschiedenen Fällen ist der Wert des Attributs unterschiedlich. Es gibt drei Hauptsituationen:
Wenn das übergebene in ein einzelner Parameter und der Parametertyp eine Liste ist, ist der Sammelattributwert die Liste
Wenn der übergebene in ein einzelner Parameter und der Parametertyp ein Array ist, ist der Eigenschaftswert der Sammlung Array
Wenn mehrere Parameter übergeben werden, müssen wir sie in eine Karte einkapseln
Die spezifische Verwendung ist wie folgt:
<einfügen id = "insertBatch" parameterType = "list"> in tstudent (Name, Alter) <foreach collection = "list" item = "item" index = "index" open = "(" close = ")" separator = "Union All"> SELECT #{item.name} as #{item.age} as B von Dual </foreAls2. MyBatis Executortype.batch
In MyBatis sind 3 Arten von Auslöser aufgebaut. Der Standard ist einfach. In diesem Modus werden eine neue Vorverarbeitungsanweisung für die Ausführung jeder Anweisung erstellt und SQL in einer einzelnen Zeile unterbreitet. Während der Stapelmodus vorbereitete Anweisungen wiederverwendet und alle Aktualisierungsanweisungen in Stapeln ausführt. Offensichtlich hat der Batch -Modus seine eigenen Probleme. Wenn bei einem Einfügungsvorgang beispielsweise die selbst erwerge ID vor der Einreichung der Transaktion die selbst erwerge ID erhalten, wird dies in einer bestimmten Situation nicht entspricht.
Die spezifische Verwendung ist wie folgt:
*Methode ein Spring+MyBatis
// SQLSession erhalten // die ursprüngliche SQLSessionTemplate von Spring@verdrängte private sqlSessionTemplate SQLSessionTemplate; // eine neue Sitzung mit Batch erhalten. Automatisch übermittelt sie automatisch zu falsch //, wenn die automatische Einreichung auf wahre Anzahl der Einreichungen eingestellt ist, und die zuletzt eingestellten Einsendungen kann geändert werden, was geändert wird, was zu einer Überfüllung des Last -Unificts ist, und die zuletzt eingestellte Übermittlung kann geändert werden, was zu einer Überfüllung der Morma, und die zuletzt eingestellte Einsendungen und die zuletzt eingestellte Einreichung, was zugeändert wird, und die zuletzt eingestellte Einreichung ändert, was zu einer geänderten Sitzung ist, was zu einer Überfüllung der Morde ist, was zu einer Überfüllung der Morde ist, was zu einer zuletzt geändert wird. sqlSessionTemplate.getSQLSessionFactory (). OpenSession (ExecUTOrtype.batch, False); // Get mapperFoomapper = session.getMapper (foomapper.class); int size = 10000; try {for (int i 0; i <size; Foo (); foo.setName (String.Valueof (System.currentTimemillis ()); e) {// Keine übermittelten Daten können zurückgerollt werden.Methode 2:
In Kombination mit dem General Mapper SQL Alias ist es am besten, Paketname + Klassenname zu haben
public void InsertBatch (MAP <String, Objekt> Parammap, Liste <Benutzer> Liste) löst eine Ausnahme aus (// eine neue Sitzung mit Batch erhalten, die automatisch an false // gesendet wird, wenn die automatische Einreichung auf true festgelegt ist, die Anzahl der Einsendungen nicht kontrolliert werden kann und die letzte Einreichung der Einheit geändert werden kann, und die Memory Overflow -SQLSSIONsions -Session kann = SQLSSIONSINESSINESSINESSIONSAMISION = DEST. sqlSessionTemplate.getSQLSessionFactory (). OpenSession (Executortype.batch, false); try {if (null! list.get (i); user.setIndate ((String) parammap.get ("angeben")); user.setDatAdate ((String) parammap.get ("datAdate"); // Datenzuordnung Zeit // Session.insert ("com.xx.mapper.usmapper.insert", Benutzer); // Session {// Senden Sie jede 1000, Sitzung manuell, nicht nach dem Commit; // den Cache reinigen, um eine Überlaufsitzung zu verhindern.Die oben genannten sind zwei Möglichkeiten zum Einfügen von Chargen in MyBatis, die Ihnen vom Herausgeber vorgestellt wurden (effiziente Einführung). Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!