


Ausführliche Erläuterung des Designs und der Implementierung des Java Web Template Code Generators
Ursache
Im Projekt müssen viele Meta-, Dao- und Servicecodes basierend auf Datenbanktabellen geschrieben werden, und viele davon sind repetitiv und umständlich. Wenn daher ein Generator für Vorlagencode vorhanden ist, kann die Entwicklungseffizienz bis zu einem gewissen Grad verbessert werden.
Ziel
Konfigurierbarer Generator zum Generieren von Dao-, Meta- und Service-Layer-Vorlagencodes in Java-Webprojekten.
Code-Framework
mvn archetype:generate -DgroupId=com.zju -DartifactId=JavaWebCodeGenerator -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=internal
Designidee
Das Projekt bezieht sich auf den Prozess der Codegenerierung mit dem Mybatis-Generator. Die spezifischen Schritte sind in die folgenden 5 Schritte unterteilt.
Logische Schritte
Befehlszeile analysieren
- Datentabelleninformationen abrufen
- Konfigurationsinformationen generieren
- Datei generieren
Befehlsparsing-Klasse ShellRunner
Diese Klasse ist für das Parsen von Befehlszeilenbefehlen, das Parsen von Konfigurationsdateien und das Kapseln der erforderlichen Daten verantwortlich Daten zur Codegenerierungsklasse. Die analysierbaren Befehle sind-config<a href="http://www.php.cn/wiki/1313.html" target="_blank">file<p>
: Geben Sie den Pfad an, in dem sich die Konfigurationsdatei befindet, und -config<a href="http://www.php.cn/wiki/1313.html" target="_blank">file</a>
: ob die Zieldatei neu geschrieben werden soll. -overwrite
Die Konfigurationselemente der Konfigurationsdatei sind: //Java SQL 驱动所在路径(暂未使用) private static final String CLASS_PATH_ENTRY = "class.path.entry"; //Java 驱动类型(暂未使用) private static final String DRIVER_CLASS = "driver.class"; //数据库地址 private static final String CONNECTION_URL = "connection.url"; //数据库用户名 private static final String USER_ID = "user.id"; //数据库密码 private static final String USER_PASSWORD = "user.password"; //模型生成地址 private static final String JAVA_MODEL_PACKAGE = "java.model.package"; //SQL生成地址 private static final String SQL_MAPPING_PACKAGE = "sql.mapping.package"; //项目地址 private static final String PROJECT = "project"; //数据表名 private static final String TABLE_NAME = "table.name"; //模型名称 private static final String DOMAIN_OBJECT_NAME = "domain.object.name";
Codegenerierungsklasse CodeGenerator
Diese Klasse ist für die Verbindung zur Datenbank und verantwortlich Abfrage der Tabelleninformationen der Datentabelle, Zuordnung von SQL-Typen zu Java-Typen und Kapselung der erforderlichen Daten in der Dateigenerierungsklasse.Class.forName(configuration.getDriverClass()); //获取数据库连接 Connection connection = DriverManager.getConnection(configuration.getConnectionURL(), configuration.getUserId(), configuration.getPassword()); DatabaseMetaData databaseMetaData = connection.getMetaData(); //获取表结构信息 ResultSet rs = databaseMetaData.getColumns("", "", configuration.getTableName(), "%");
-Methode besteht darin, die databaseMetaData.getColumns
-Anweisung auszuführen. SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME="tableName"
Feld | Beschreibung |
---|---|
DATA_TYPE | Datentyp |
COLUMN_SIZE | Datenlänge |
COLUMN_NANE | Spaltenname |
Ob ungleich Null zulässig ist | |
DECIMAL_DIGITS | Dezimalstellen |
BEMERKUNGEN | Bemerkungen |
COLUMN_DEF | Standardwert |
字段 | 描述 |
---|---|
DATA_TYPE | 数据类型 |
COLUMN_SIZE | 数据长度 |
COLUMN_NANE | 列名 |
NULLABLE | 是否允许非空 |
DECIMAL_DIGITS | 小数位数 |
REMARKS | 备注 |
COLUMN_DEF | 默认值 |
) in JavaTypeResolver
und Kamel-Case-Benennungskonvertierung (Map<Integer, JdbcTypeInformation> typeMap
) in StringUtils
in Java-Informationen um. getCamelCaseString
Dateigenerierungsklasse FileGenerator
Diese Klasse kombiniert Daten über dieFreeMarkerVorlagen-Engine zu einer Zielcodedatei.
Die Hauptlogik lautet wie folgt:/** * @param configuration 封装的配置信息 * @param columns 封装的数据表列信息 * @throws IOException * @throws TemplateException */ public static void writeFile(Configuration configuration, List<TableColumn> columns) throws IOException, TemplateException { File r=new File(""); //测试环境获取项目根目录路径 //String path=Class.class.getClass().getResource("/").getPath(); //Jar包获取根目录路径 String path=r.getAbsolutePath(); //System.out.println("path:"+path); Configuration cfg = new Configuration(); cfg.setDirectoryForTemplateLoading(new File(path + "/ftl")); //需要文件夹绝对路径 cfg.setDefaultEncoding("UTF-8"); cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); Map root = new HashMap(); root.put("configuration", configuration); root.put("columnList", columns); writeSingleFile(cfg, root, "DaoImpl.ftl", configuration.getProjectPath(), configuration.getSqlMappingPackage().replace(".", "/"), configuration.getDomainObjectName(), "DaoImpl.java",configuration.getOverwrite()); writeSingleFile(cfg, root, "Dao.ftl", configuration.getProjectPath(), configuration.getSqlMappingPackage().replace(".", "/"), configuration.getDomainObjectName(), "Dao.java",configuration.getOverwrite()); writeSingleFile(cfg, root, "Meta.ftl", configuration.getProjectPath(), configuration.getJavaModelPackage().replace(".", "/"), configuration.getDomainObjectName(), ".java",configuration.getOverwrite()); }
Hinweis
Beim TestenDiese Methode kann das Projektstammverzeichnis abrufen. aber beim Testen ist diese Methode effektiv, wenn ein Jar-Paket generiert wird. Daher müssen Sie diese Zeile vor dem Generieren des Jar-Pakets in Class.class.getClass().getResource("/").getPath();
ändern, um den Generierungspfad zu erhalten. new File("").getAbsolutePath();
class.path.entry=src/test/resources/mysql-connector-java-5.1.38.jar driver.class=com.mysql.jdbc.Driver connection.url=jdbc:mysql://localhost:3307/work user.id= user.password= java.model.package=com.model sql.mapping.package=com.dao project=src table.name=holiday domain.object.name=Holiday
java -jar JavaWebCodeGenerator.jar -configfile generatorConfig.properties -overwrite
Beispieldemonstration
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Designs und der Implementierung des Java Web Template Code Generators. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Nach tatsächlichen Tests hat der AI-ID-Fotogenerator eine gute Leistung gezeigt und seine leistungsstarken Funktionen sind erstaunlich. Sie müssen sich wirklich keine Sorgen mehr um das Aufnehmen von Fotos machen! Dieser Satz wird wie folgt umgeschrieben: Verwenden Sie die Chuzhan AI-Software (das Urheberrecht und die Interpretationsrechte liegen bei Chuzhan AI und werden nur zur Darstellung des erzeugten Effekts verwendet). Skizzenmodus: Ob in der täglichen Arbeit oder in Geschäftsbürosituationen, ein professionelles Image ist entscheidend. Ein schönes Ausweisfoto kann das professionelle Image einer Person verbessern. Durch KI generierte Ausweisfotos entsprechen nicht nur herkömmlichen Fotostandards, sondern können auch die einzigartigen Gesichtszüge einer Person wiederherstellen. Die KI-Technologie kann Gesichtskonturen, Hautfarbe, Beleuchtung und andere Details intelligent identifizieren, um das am besten geeignete Ausweisfoto zu erstellen. Ob Aussehen oder Temperament, es kann perfekt dargestellt werden und einen tiefen ersten Eindruck bei den Menschen hinterlassen. KI generiert mit einem Klick Ausweisfotos.

Wie schreibe ich einen einfachen Generator für Schülerleistungsberichte mit Java? Der Student Performance Report Generator ist ein Tool, das Lehrern und Erziehern dabei hilft, schnell Berichte über die Schülerleistung zu erstellen. In diesem Artikel wird erläutert, wie Sie mit Java einen einfachen Generator für Schülerleistungsberichte schreiben. Zuerst müssen wir das Studentenobjekt und das Studentennotenobjekt definieren. Das Schülerobjekt enthält grundlegende Informationen wie den Namen und die Schülernummer des Schülers, während das Schülerergebnisobjekt Informationen wie die Fachnoten und die Durchschnittsnote des Schülers enthält. Das Folgende ist die Definition eines einfachen Studentenobjekts: öffentlich

Wenn Sie den besten kostenlosen Generator für KI-Animationskunst suchen, können Sie Ihre Suche beenden. Die Welt der Anime-Kunst fasziniert das Publikum seit Jahrzehnten mit ihren einzigartigen Charakterdesigns, faszinierenden Farben und fesselnden Handlungen. Allerdings erfordert die Erstellung von Anime-Kunst Talent, Geschick und viel Zeit. Dank der kontinuierlichen Weiterentwicklung der künstlichen Intelligenz (KI) können Sie jetzt mithilfe des besten kostenlosen KI-Animationskunstgenerators die Welt der Animationskunst erkunden, ohne sich mit komplexen Technologien befassen zu müssen. Dies eröffnet Ihnen neue Möglichkeiten, Ihrer Kreativität freien Lauf zu lassen. Was ist ein KI-Generator für Anime-Kunst? Der AI Animation Art Generator nutzt hochentwickelte Algorithmen und Techniken des maschinellen Lernens, um eine umfangreiche Datenbank mit Animationswerken zu analysieren. Durch diese Algorithmen lernt und identifiziert das System verschiedene Animationsstile

Generatoren in PHP7: Wie kann man große Datenmengen effizient verarbeiten und Speicher sparen? Überblick: PHP7 führt Generatoren als leistungsstarkes Werkzeug im Hinblick auf die Verarbeitung großer Datenmengen und die Speichereinsparung ein. Generatoren sind eine besondere Art von Funktion in der PHP-Sprache. Im Gegensatz zu gewöhnlichen Funktionen können Generatoren die Ausführung anhalten und Zwischenergebnisse zurückgeben, anstatt alle Ergebnisse auf einmal zurückzugeben. Dadurch ist der Generator ideal für die Verarbeitung großer Datenmengen, reduziert den Speicherverbrauch und verbessert die Verarbeitungseffizienz. In diesem Artikel werden Studierende vorgestellt

So schreiben Sie einen einfachen QR-Code-Generator mit PHP QR-Codes sind in der modernen Gesellschaft weit verbreitet. Sie können Informationen schnell übertragen und das Benutzererlebnis verbessern. In diesem Artikel zeige ich Ihnen, wie Sie mit PHP einen einfachen QR-Code-Generator schreiben. 1. Installieren Sie die erforderlichen Tools und Bibliotheken. Bevor wir beginnen, müssen wir sicherstellen, dass die folgenden Tools und Bibliotheken installiert wurden: PHP: Stellen Sie sicher, dass die neueste Version von PHP installiert ist. Sie können die aktuelle PHP-Version überprüfen, indem Sie PHP ausführen -v-Befehl. Komponist: C

Das Konzept des Generators (Generator) wurde in PHP7 eingeführt, das eine Methode zum effizienten Umgang mit großen Datenmengen und verzögertem Laden bietet. Dieser Artikel beginnt mit Konzepten und Prinzipien, kombiniert mit spezifischen Codebeispielen, um die Verwendung und Vorteile von Generatoren in PHP7 vorzustellen. Ein Generator ist eine spezielle Funktion, die nicht alle Daten auf einmal zurückgibt, sondern Daten bei Bedarf generiert. Wenn die Funktion die yield-Anweisung ausführt, wird der aktuell generierte Wert zurückgegeben und der Status der Funktion gespeichert. Wenn die Generatorfunktion das nächste Mal aufgerufen wird, wird die Funktion ausgeführt

Nachdem ChatGPT mit dem Internet verbunden werden konnte, führte OpenAI auch schnell einen Codegenerator ein. Mit der Unterstützung dieses Plug-Ins kann ChatGPT sogar ein eigenes maschinelles Lernmodell generieren. Letzten Freitag gab OpenAI gerade die schockierende Nachricht bekannt, dass ChatGPT eine Verbindung zum Internet und zu Plug-Ins von Drittanbietern herstellen kann! Zusätzlich zu Plug-ins von Drittanbietern führte OpenAI auch sein eigenes Plug-in „Code Interpreter“ ein und bot mehrere spezielle Anwendungsfälle: Lösung quantitativer und qualitativer mathematischer Probleme und schnelle Konvertierung von Dateiformaten; Darüber hinaus demonstrierte Greg Brockman, dass ChatGPT auch hochgeladene Videodateien verarbeiten kann. Und ein Bestsellerautor namens Andrew Mayne

Was ist der Unterschied zwischen Iteratoren und Generatoren in Python? In der Python-Programmierung sind Iteratoren und Generatoren Werkzeuge zur Verarbeitung iterierbarer Objekte. Beide können zum Durchlaufen von Daten verwendet werden, es gibt jedoch einige Unterschiede in der Implementierung. Ein Iterator ist ein Objekt, das das Iteratorprotokoll implementiert. Das Iteratorobjekt muss zwei Methoden enthalten: __iter__() und __next__(). Das
