Über MyBatis Generator
MyBatis Generator (MBG) ist ein MyBatis -Codegenerator MyBatis und Ibatis. Es kann Code für verschiedene Versionen von MyBatis und Code nach Ibatis 2.2.0 generieren. Er kann die Tabellen (oder Tabellen) der Datenbank ein- und erzeugen und dann das zugrunde liegende Objekt generieren, mit dem auf die Tabellen (mehrere) der Tabellen zugreifen kann. Auf diese Weise sind bei der Interaktion mit Datenbanktabellen keine Objekte und Konfigurationsdateien erforderlich. MBG löst einige einfache CRUD -Operationen (Einfügen, Abfrage, Update, Löschen), die den größten Einfluss auf die Datenbankoperationen haben. Sie müssen weiterhin SQL und Objekte in der Föderationsabfrage und den gespeicherten Verfahren handgeschrieben.
MyBatis Generator wird erzeugen:
Java Pojos Matching Table Structures kann umfassen:
Es wird eine angemessene Vererbungsbeziehung zwischen diesen Klassen geben. Beachten Sie, dass der Generator so konfiguriert werden kann, dass es Hierarchien verschiedener Arten von Pojos generiert. Wenn Sie beispielsweise bevorzugen, können Sie für jede Tabelle ein separates Entitätsobjekt generieren.
MyBatis/Ibatis kompatibel mit SQL-Mapping XML-Dateien. MBG generiert SQL in Konfiguration für einfache CRUD -Operationen für jede Tabelle. Die generierten SQL -Anweisungen umfassen:
Abhängig von der Struktur der Tabelle variieren die generierten Anweisungen (z. B. wenn in der Tabelle kein Primärschlüssel vorhanden ist, generiert MBG das Update nicht nach Primärschlüsselmethode).
Die Java -Client -Klasse verwendet das obige Objekt angemessen und ist beim Generieren der Java -Client -Klasse optional. MBG generiert die folgende Client -Klasse für MyBatis 3.x:
Eine Mapper -Schnittstellenklasse, die mit MyBatis 3.x verwendet werden kann
MBG generiert die folgende Client -Klasse für Ibatis 2.x:
DAO -Klasse, die dem Frühlingsrahmen entspricht.
Verwenden Sie nur den DAO der Ibatis SQL Mapping -API. Dieser DAO kann auf zwei Arten erzeugt werden: SQLMAPClient durch Konstruktionsmethoden oder Setter -Injektion bereitstellen.
DAO konform mit dem Ibatis DAO -Framework (ein optionaler Teil von Ibatis, der veraltet ist, empfehlen wir, stattdessen Spring Framework zu verwenden).
MyBatis Generator kann in einer iterativen Entwicklungsumgebung gut laufen und als Ameisenaufgabe oder Maven-Plug-In in einer kontinuierlichen Bauumgebung fungieren. Die folgenden wichtigen Dinge, die Sie beim Ausführen von MBG erinnern sollten:
MBG fusioniert automatisch XML, die bereits existiert und mit der neu generierten Datei dupliziert wird. MBG überschreibt nicht die Modifikationen, die Sie an den von Ihnen generierten XML vorgenommen haben. Sie können es immer und immer wieder ausführen, ohne sich Sorgen zu machen, dass Sie Ihre individuellen Änderungen verlieren. MBG ersetzt alle in früheren Läufen generierten XML -Elemente.
MBG fügt keine Java -Dateien zusammen, sondern kann vorhandene Dateien überschreiben oder neu generierte Dateien in einem anderen eindeutigen Namen speichern. Sie können diese Änderungen manuell zusammenführen. Wenn Sie das Eclipse -Plugin verwenden, kann MBG Java -Dateien automatisch zusammenführen.
Grundnutzung
MBG stützt sich hauptsächlich auf eine XML -Konfigurationsdatei. Zunächst können wir ein neues Projekt namens MyBatisGenerator neu erstellen und drei neue Pakete mit dem Namen config, David.test und David.mbg erstellen. Das Konfigurationspaket speichert hauptsächlich die in realen MyBatis benötigten Konfigurationsdateien. Sie können die mybatis_demo_config.xml in den vorherigen Kapiteln im Projekt kopieren und in dieses Verzeichnis usw. zum Testen von Programmen einfügen. Wie der Name schon sagt, wird David.test die folgenden häufig verwendeten Methoden und Testprogramme speichern. Sie können auch die MyBatisutils -Werkzeugklasse in den vorherigen Kapiteln verwenden und die entsprechende Mainfunktion für Testzwecke erstellen. Und der letzte David.mbg ist der XML, den wir heute konfigurieren werden, und der MBG generiert Konfigurationsdatei.
Wie in der Abbildung gezeigt, haben wir eine neue Konfigurationsdatei namens MBG_Configuration.xml unten erstellt. Die Details sind wie folgt:
<? <classpathEntry location = "./ lib /mysql-connector-Java-5.1.26-bin.jar" /> <context id = "mybatisDemoformysql" targetRuntime = "myBatis3"> <!-Control Kommentare-<commentGenerator> <! Unabhängig davon, ob die Zeitstempel aller automatisch generierten Dateien entfernen sollen, standardmäßig für False-> <Eigenschaft name = "unterdrückt" value = "true" /> < /commentgenerator> <!-Steuerdatenbank-> <jdbcconnection driverClass = "com.mysql.jdbc.driver" " ConnectionUrl = "JDBC: MySQL: //127.0.0.1: 3306/mybatis_db? CharakterCoding = utf8" userId = "root" password = "David0110"/> <Javatyperesolver> <!-Convert Decimal- und Numbers-Typen in jdbc in Intenstypen-> <Bonbigdecimals ". < /javatyperesolver> <!-Modell, das der Datenbanktabelle entspricht-> <JavamodelGenerator targetPackage = "David.model" targetProject = "src"> <Eigenschaft name <SQLMAPGenerator targetPackage = "David.Mappers" targetProject = "src"> <Eigenschaft name = "enableBpackages" value = "true" /> < /sqlmapgenerator> <!-steuern Sie die Mapper-Schnittstelle-> <javaclientGenerator toMtpackage = "David.InterCry.Inter". name = "enableSubpackages" value = "true" /> <Eigenschaft name = "methodnamecalculator" value = "Extended" /> < /javaClientGenerator> <!-Schema für Ihre Datenbank, TableName zeigt an, dass das DomainObjectname Ihrem Javaban-Klassenname, ob das entsprechende Beispiel generiert wurde, erstellt wurde. DomainObjectName = "Visitor" EnableCountByExample = "False" EnableUpDateByExample = "False" EnableTELETEByExample = "False" enableByExample = "false" selectByExampleQuampleQueryID = "False"> <generatedKey Column = "id" sqlstatement = "mySQL" /> <spalten -spalten = " <ignoreColumn column = "status" delimitedColumnname = "false"/> </table> </context> </generatorConfiguration>
Sie können feststellen, dass es hauptsächlich diese Knoten sind
<classPathEntry> => Der Ort, an dem das JDBC -Treiberpaket gespeichert ist, kann verwendet werden, um relative Pfade oder absolute Pfade zu verwenden. In diesem Beispiel wird der relative Pfad verwendet.
<Context> => Einentschieden mit der Konfiguration aller Tabellen in einer Datenbank können mehrere Kontexte, eine Konfiguration MySQL und eine Konfiguration Oracle bestehen.
Die wichtigsten unter dem Knoten <Context> sind:
<Kommentgenerator> => Kommentargeneratorknoten, die 2 Untertabellen in diesem Beispiel darstellen
Unterdrückungspunkte => Ob alle automatisch generierten Kommentardateien entfernen sollen
Unterdrückung => Ob die Zeitstempel aller automatisch generierten Dateien entfernen soll, standardmäßig für false
<Jdbcconnection> => Datenbankverbindungskonfigurationsinformationen
<JavatyPeresolver> => Konvertieren Sie Dezimal- und Zahlentypen in JDBC in java.math.bigdeciaml Form -Repräsentation
<JavamodelGenerator> => Konfigurieren Sie Ihre Pojo -Entitätsklasse, targetPackage = "David.model". Entsprechend Ihrer Registrierung können Sie es nach dem tatsächlichen Geschäft nennen, targetProject = "src". In der Eclipse -Umgebung wird der Pfad zum Projekt- und Quellordner im Allgemeinen als SRC -Verzeichnis bezeichnet. Ihr Paket wird in diesem Verzeichnis neu erstellt. Wenn es nicht die Eclipse -Umgebung ist, sollte der Wert hier ein tatsächlicher Dateisystempfad sein. Wenn der angegebene Pfad nicht vorhanden ist, wird ein Fehler gemeldet, da MBG den entsprechenden Ordner nicht selbst erstellt
<Sqlmapgenerators> => Konfigurieren Sie, um die entsprechende Entität mapper.xml zu generieren. Für Mapper3.x müssen wir = "xmlmapper" type type type type.
<JavaClientGenerator> => Konfiguration erzeugt die entsprechende Grenzflächenklasse, die einer Reihe von Crud -Methoden -SQL -Anweisungen in Mapper.xml entspricht
<tabelle> => Konfigurieren Sie die entsprechende Datenbank, die angibt, dass der Name der Domänenklasse (dh Entity -Klasse -Name) generieren möchte. In diesem Beispiel habe ich alle unnötigen Informationen zur Erzeugung von Beispielen geschlossen
Alle oben genannten Informationen können auf der offiziellen Website auf die entsprechenden Dokumente überprüft oder in meiner Datei mit den entsprechenden Konfigurationsanweisungen und zugehörigen Anwendungsbeispielen heruntergeladen werden. Laden Sie das Dokument herunter
Was ist nach dem Konfigurieren der oben genannten Informationen der letzte Schritt? Wir werden diese Skriptdatei ausführen. Es gibt 4 Wege in der offiziellen Beschreibung. Die erste ist die Befehlszeilenmethode, die zweite und dritte werden durch Tools wie Ameise oder Maven erzeugt. Der letzte wird über Java -Code generiert. Wir verwenden die Methode, über Java -Gerste zu erzeugen. Die Methode zum Hinzufügen eines generierten Skripts zur Demorun -Klasse lautet wie folgt:
private static void GeneratembgConfiguration () { /** MyBatis wird mit Generator -Tool geliefert, um die entsprechende Sache zu generieren* / list <string> Warnings = new ArrayList <string> (); boolean overwrite = true; Datei configFile = new Datei ("./ Src/David/MBG/MBG_Configuration.xml"); ConfigurationParser cp = new ConfigurationParser (Warnungen); Configuration config = null; try {config = cp.ParseConfiguration (configFile); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } catch (xmlParSerexception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); } DefaultShellCallback callback = new DefaultShellCallback (Overwrite); Versuchen Sie {MyBatisGenerator myBatisGenerator = new MyBatisGenerator (Konfiguration, Rückruf, Warnungen); MyBatisGenerator.Generate (NULL); } catch (InvalyConfigurationException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } catch (SQLEXception e) {// Todo automatisch generierter Fangblock e.printstacktrace (); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } catch (InterruptedException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } System.out.println ("Die MyBatis -Konfiguration wurde erfolgreich generiert!"); } Nach dem Laufen werden Sie das Projekt aktualisieren, und Sie werden feststellen, dass das folgende auf magische Weise die Hauptkonfiguration für Sie erzeugt. Der rote Kästchenabschnitt der Abbildung unten:
Verwenden wir schließlich die automatisch generierten Ergebnisse. Wir können uns auf die ersten sechs Kapitel beziehen, um dem Demorun die entsprechende CRUD -Testmethode wie folgt hinzuzufügen:
/** Besucherinformationen abfragen*/ public static void testgenerateadd () {sqlSession Session = mybatisutils.getSQLSession (); VisitorMapper voperation = session.getMapper (VisitOrPer.Class); Besucher Besucher = neuer Besucher (); Visitor.Setvisor_Name ("Hello2"); Visitor.setemail ("[email protected]"); Visitor.SetCreateTime (neues Datum ()); int count = voperation.insert (Besucher); Session.Commit (); MyBatisutils.Closession (Sitzung); Mybatisutils.showMessages (crud_enum.add, count); } /** Besucherinformationen abfragen* / public static void testGenerateQuery (int id) {SQLSession Session = mybatisutils.getSQLSession (); VisitorMapper voperation = session.getMapper (VisitOrPer.Class); Besucher Besucher = voperation.SelectByprimaryKey (ID); MyBatisutils.Closession (Sitzung); Mybatisutils.showMessages (crud_enum.Query, 1); System.out.println (Besucher); } public static void testgeneratedelete (int id) {SQLSession Session = myBatisutils.getSQLSession (); VisitorMapper voperation = session.getMapper (VisitOrPer.Class); int count = voperation.deleteByprimaryKey (ID); Session.Commit (); MyBatisutils.Closession (Sitzung); Mybatisutils.showMessages (crud_enum.delete, count); } public static void testgenerateUpdate (int id) {SQLSession Session = mybatisutils.getSQLSession (); VisitorMapper voperation = session.getMapper (VisitOrPer.Class); Besucher Besucher = voperation.SelectByprimaryKey (ID); System.out.println (Besucher); String name = Visitor.getvisitor_name (); if (name.contains ("update")) {Visitor.setvisitor_name (name.substring (0, name.indexof ("update")); } else {Visitor.setvisitor_name (Name + "Update"); } int count = voperation.UpdatByprimaryKey (Besucher); Session.Commit (); MyBatisutils.Closession (Sitzung); Mybatisutils.showMessages (crud_enum.update, count); System.out.println (Besucher); } Führen Sie das Testprogramm aus und das Ergebnis ist
Haben Sie das Gefühl, dass Sie dies bei der Verwendung Ihrer Effizienz sehr verbessert haben, und Sie müssen sich keine Sorgen über umständliche Konfigurationen machen. Zumindest müssen Sie sich nicht wiederholende und unnötige Schritte ausführen. Lassen Sie diese den Werkzeugen überlassen^0^. Natürlich müssen wir bei der tatsächlichen Verwendung die entsprechenden Namen für Klasseninformationen und Schnittstelleninformationen nach der Generation ändern. Natürlich sind diese Workloads nicht zu viel. Ich hoffe, dass diese Inhalte für Schüler hilfreich sind, die sie heute konfigurieren müssen.