MyBatis ist ein Java -Persistenz -Framework, das Objekte mit gespeicherten Verfahren oder SQL -Anweisungen durch XML -Deskriptoren oder Anmerkungen assoziiert.
MyBatis ist eine kostenlose Software, die unter Apache -Lizenz 2.0 verteilt ist und eine Zweigversion von Ibatis 3.0 ist. Das Wartungsteam umfasst auch Ibatis Startup -Mitglieder.
Im Gegensatz zu anderen objektrelationalen Mapping-Frameworks assoziiert MyBatis Java-Objekte nicht mit Datenbanktabellen, sondern Java-Methoden mit SQL-Anweisungen. Mit MyBatis können Benutzer verschiedene Datenbankfunktionen, wie z. B. gespeicherte Verfahren, Ansichten, verschiedene komplexe Abfragen und die proprietären Funktionen einer Datenbank, voll ausnutzen. Wenn Sie in Legacy -Datenbanken, unregelmäßigen Datenbanken oder über die vollständige Kontrolle über die SQL -Ausführung arbeiten möchten, ist MyBatis eine gute Wahl.
Im Vergleich zu JDBC vereinfacht MyBatis den entsprechenden Code: SQL -Anweisungen können in einer Codezeile ausgeführt werden. MyBatis liefert eine Mapping -Engine, die die Ausführungsergebnisse von SQL -Anweisungen mit dem Objektbaum deklarativ ordnet. SQL-Anweisungen können dynamisch unter Verwendung einer integrierten XML-ähnlichen Expressionssprache oder mithilfe von Apache-Geschwindigkeits-Plug-Ins erzeugt werden.
MyBatis integriert sich in Spring Framework und Google Guice, was Entwicklern vor Abhängigkeitsproblemen speichert.
MyBatis unterstützt deklarative Daten zwischen den Daten. Wenn eine SQL -Anweisung als "zwischengespeichert" gekennzeichnet ist, werden alle Daten, die aus der Datenbank erhalten werden, wenn sie zum ersten Mal ausgeführt wird, in einem Cache gespeichert. Wenn diese Aussage in Zukunft ausgeführt wird, wird das Ergebnis aus dem Cache gelesen, anstatt erneut auf die Datenbank zu klicken. MyBatis bietet standardmäßig eine Java-HashMap-basierte Cache-Implementierung sowie einen Standard-Anschluss für Verbindungen mit Oscache, EHCache, Hazelcast und Memcached. MyBatis bietet auch API für andere Cache -Implementierungen.
Wichtige Punkte
Nach dem Lernen in dieser Zeit kann der Hauptprozess für MyBatis nicht die folgenden Schritte sein
1. Erhalten Sie den SessionFactory aus der XML -Konfigurationsdatei und generieren Sie dann die entsprechende Sitzung aus der SessionFactory.
2. Verwenden Sie das Sitzungsobjekt, um die entsprechenden CRUD -Operationen (Zugabe, Löschung, Änderung und Abfrage) und die entsprechende Transaktionskontrolle für die Geschäftsdaten zu vervollständigen.
3. Schließen Sie die entsprechende Sitzung nach dem Gebrauch, um einen übermäßigen Ressourcenverbrauch zu vermeiden
4. Verwenden Sie die entsprechende Mapper -XML -Datei, um den entsprechenden Kartenvorgang zwischen dem Javabäer der Geschäftsentität und der Datenbanktabelle zu konfigurieren.
Vorkriegsvorbereitungen:
1. Entwicklungsumgebung Eclipse Javaee IDE, JDK 1.6, Datenbank MySQL 5.5
2. Laden Sie das entsprechende JAR -Paket für die spätere Verwendung herunter
MyBatis-3.2..zip nach Dekompression, nimm mybatis-3.2.2
mybatis-generator-core-1.3.jar => download adresse: http://code.google.com/p/mybatis/wiki/generator (MyBatis generiert automatisch Konfigurationsdateipaket)
mysql-connector-java-5.1.26-in.jar => Download Adresse: http://dev.mysql.com/downloads/connector/j/ (JDBC-Treiberpaket von Mysql)
Bauschritte
Als nächstes können Sie ein Java -Projekt mit dem Namen MyBatisDemo unter Eclipse erstellen und die entsprechende Paketstruktur und die Ordnerstruktur erstellen, wie in der folgenden Abbildung gezeigt, in der Config und Mapper Ordner sind.
Das entsprechende Demo-Runner-Programm und JavaBean-Objekte werden unter dem Paket David.mybatis.demo und dem Paket David.mybatis.model gespeichert, und die gerade heruntergeladenen JAR-Pakete von Drittanbietern werden im Lib-Ordner gespeichert.
Nach dem Erstellen des folgenden Verzeichnisses können wir das entsprechende JAR -Paket wie in der folgenden Abbildung hinzugefügt
Führen Sie nach Abschluss die folgende SQL aus, um die für Demo erforderliche Tabellenstruktur festzulegen, einschließlich 3 Tabellen, Besucher (Besuchertabelle), Website (Website -Tabelle) und Kanal (Kanaltabelle).
/*Besucher erstellen*/Tabelle Besucher (ID int (11) nicht null auto_increment, name varchar (1000) NICHT NULL, E -Mail Varchar (1000) NICHT NULL, Status int nicht null Standard 1, createtime datetime, primärtaste (id))/*creato -Tabelle erstellen*/creator table -Website (nicht null null null null null pracy achces achod. Visitor (ID), Status int nicht null Standard 1, createTime datetime)/*Kanaltabelle erstellen*/creating table sender (id int nicht null primärschlüssel auto_increment, name varchar (1000) NICHT NULL, Website IND Referenzen Website (ID), Status int nicht null default 1, createtime datetime)
Nachdem dies geschehen ist, werden wir damit beginnen, es zu tun ~
Wie zu Beginn erwähnt, stammen alle MyBatis -Konfigurationen aus einer XML -Konfigurationsdatei. Wir müssen im Konfigurationsordner eine neue Konfigurationsdatei namens MyBatis_Demo_Config.xml erstellen. Dieses Ding ist eines der Kernoperationen, die wir später ausführen müssen.
Bei der Konfiguration dieser Datei müssen Sie auf die Elemente im <configuration> -Knoten achten, die hierarchische Bestellanforderungen haben und nicht nach Belieben geändert werden können. Andernfalls tritt eine Ausnahme beim Laden der XML -Konfigurationsdatei auf, was zu erfolglosen nachfolgenden Operationen führt.
Für bestimmte Knotenbeschreibungen können Sie http://mybatis.github.io/mybatis-3/zh/configuration.html# überprüfen. Hier sprechen wir nur über die häufiger verwendeten Knoten, Typen, Umgebungen, Mapper.
1. Typealiases => alias Knoten. Sie können die Eigenschaften dieses Knotens so festlegen, dass dieser Alias anstelle eines voll qualifizierten Namens in der Konfigurationsdatei verwendet wird.
Zum Beispiel <typealias type = "David.mybatis.model.visor" alias = "Besucher" />
2. Umgebungen => Umgebungsknoten, Konfigurieren von Datenverbindungsinformationen
3. Mappers => SQL Mapping -Anweisungen konfigurieren.
Die einfachste Konfiguration ist wie folgt:
<? type="david.mybatis.model.Visitor" alias="Visitor" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <!-- useUnicode = true & charakterencodierung = utf8 zur Unterstützung der chinesischen Insertion-> <Eigenschaft name = "url" value = "jdbc: mysql: //127.0.0.1: 3306/mybatis_db? useUnicode = true & charakterscoding = utf8"/> <Eigenschaft name "username value = "123456"/> </dataSource> </umwelt> </Umgebungen> <mappers> <mapper ressourcen = "maper/Visitormapper.xml"/> </mappers> </configuration>
Erstellen Sie eine neue Klasse namens MyBatisutils unter dem Paket David.mybatis.demo, in dem die Methoden zur Erzielung von SQLSession und schließen SQLSession gespeichert sind, die extrahiert werden, um die Mehrfachverwendung zu erleichtern.
Paket David.mybatis.demo; import Java.io.inputstream; import org.apache.ibatis.io.resources; import org.apache.ibatis.Session.sqlSession; David.mybatis.model.crud_enum; öffentliche Klasse mybatisutils {private static final String config_path = "config/mybatis_demo_config.xml"; /** Datenbankzugriffslink erhalten*/ public static sqlSession gotsQlSession () {SQLSession Session = null; try {InputStream stream = ressourcen.getResourceAsStream (config_path); // Die entsprechende Datenbankumgebung kann gemäß der entsprechenden konfigurierten Umgebung gelesen werden // sqlSessionFactory factory SqlSessionFactory factory = new SQLSessionFactoryBuilder () .build (stream); Session = factory.openSession (); } catch (Ausnahme e) {// toDo: Behandeln Sie die Ausnahme E.PrintStackTrace (); } Rückgabesitzung; } / * * Datenbankzugriffslink erhalten * / public static void clossession (SQLSession Session) {session.close (); } /** Vorgangsrekordnachricht zurückgeben* / public static void showsMessages (crud_enum type, int count) {switch (type) {case add: system.out.println ("hinzugefügt" + count + "record."); brechen; Fall Delete: System.out.println ("gelöscht" + count + "Datensätze"); brechen; Fall -Update: System.out.println ("aktualisiert" + count + "Datensätze"); brechen; Fallabfrage: System.out.println ("Matched" + count + "Records."); brechen; Fallliste: System.out.println ("Gesamt" + count + "Datensätze"); brechen; Standard: Break; }}}Erstellen Sie eine neue Klasse namens Besucher unter dem Paket David.mybatis.model, um sie als entsprechend oder zu Mapping zu verwenden.
Paket David.mybatis.model; Import Java.Text.SimpledateFormat; Import Java.util.Date; öffentliche Klasse Besucher {private int id; privater Zeichenfolge Name; private Zeichenfolge E -Mail; privater Int -Status; privates Date Createtime; public Visitor () {// Todo automatisch generierter Konstruktor Stub CreateTime = new Date (); } public Visitor (Zeichenfolge Name, Zeichenfolge E -Mail) {this.name = name; this.email = E -Mail; this.status = 1; this.createTime = new Date (); } public int getid () {return id; } public void setName (String -Name) {this.name = name; } public String getName () {return name; } public void setemail (String -E -Mail) {this.email = E -Mail; } public String getemail () {E -Mail zurückgeben; } public date getCreateTime () {return CreateTime; } @Override public String toString () {// Todo automatisch generierte Methode Stub return string.format ("{id: %d, name: %s, createtime: %s}", id, name, new SimpledateFormat ("yyyy-mm-mm hh: mm: ss"). Format (createtime); }}Erstellen Sie unter dem Paket David.mybatis.demo eine neue VisitorMapper.xml, um die entsprechende SQL -Anweisung abzubilden.
Hier sollten Sie beachten, dass Namespace => David.mybatis.demo.ivisitorOperation dem tatsächlichen Dateinamen unterhalb des entsprechenden Pakets zugeordnet werden muss. Andernfalls kann die entsprechende Zuordnungsdatei nicht erfolgreich geladen werden.
<mapper namespace = "David.mybatis.demo.IVisitorOperation"> <select id = "basicQuery" parameterType = "int" resultType = "Visitor"> SELECT * vom Besucher wob
Nächstes führen Sie das folgende Programm aus
public static void testbasicQuery (int id) {SQLSession Session = mybatisutils.getSQLSession (); try {Visitor Visitor = (Besucher) Sitzung.Selectone ("David.mybatis.demo.IVisitorOperation.BasicQuery", ID); MyBatisutils.Closession (Sitzung); System.out.println (Besucher); } catch (Ausnahme e) {// toDo: Handle -Ausnahme}}}} Das einfachste Ausführungsergebnis ist heraus
Dies ist der Helloword der MyBatis -Serie ~