Table des matières
Cause
Cible
Cadre de code
Idée de conception
Conception de code
Structure du projet
Exemple de fichier de configuration
Exemple de commande d'exécution
Exemple de démonstration" >Exemple de démonstration
Maison Java javaDidacticiel Explication détaillée de la conception et de la mise en œuvre du générateur de code de modèle Web Java

Explication détaillée de la conception et de la mise en œuvre du générateur de code de modèle Web Java

Mar 18, 2017 am 10:32 AM

Cause

Dans le projet, de nombreux codes Meta, Dao et Service doivent être écrits sur la base de tables de base de données, et beaucoup d'entre eux sont répétitifs et fastidieux. Par conséquent, s'il existe un générateur pour le code du modèle, l'efficacité du développement peut être améliorée dans une certaine mesure.

Cible

Générateur configurable pour générer des codes de modèles de couches Dao, Meta et Service dans les projets Web Java.

Cadre de code

mvn archetype:generate 
-DgroupId=com.zju 
-DartifactId=JavaWebCodeGenerator 
-DarchetypeArtifactId=maven-archetype-webapp 
-DinteractiveMode=false 
-DarchetypeCatalog=internal
Copier après la connexion

Idée de conception

Le projet fait référence au processus de génération de code avec le générateur Mybatis. Les étapes spécifiques sont divisées en 5 étapes suivantes.

Étapes logiques

  1. Analyser la ligne de commande

  2. Analyser le fichier de configuration

  3. Obtenir des informations sur la table de données

  4. Générer des informations de configuration

  5. Générer un fichier

Conception de code

Classe d'analyse de commandes ShellRunner

Cette classe est responsable de l'analyse des commandes de ligne de commande, de l'analyse des fichiers de configuration et de l'encapsulation des éléments requis données vers la classe de génération de code.

Les commandes analysables sont -config<a href="http://www.php.cn/wiki/1313.html" target="_blank">file<code>-config<a href="http://www.php.cn/wiki/1313.html" target="_blank">file</a> : Précisez le chemin où se trouve le fichier de configuration et -overwrite : s'il faut réécrire le fichier cible.

Les éléments de configuration du fichier de configuration sont :

//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";
Copier après la connexion

Classe de génération de code CodeGenerator

Cette classe est responsable de la connexion à la base de données et interrogeant les informations de la table de données, mappe les types SQL aux types Java et encapsule les données requises dans la classe de génération de fichiers.

Class.forName(configuration.getDriverClass());
//获取数据库连接
Connection connection = DriverManager.getConnection(configuration.getConnectionURL(), 
configuration.getUserId(), 
configuration.getPassword());
DatabaseMetaData databaseMetaData = connection.getMetaData();
//获取表结构信息
ResultSet rs = databaseMetaData.getColumns("", "", configuration.getTableName(), "%");
Copier après la connexion

Grâce aux lignes de code ci-dessus, les informations de la table de données cible ont été obtenues dans la variable rs. L'essence de la méthode

databaseMetaData.getColumns est d'exécuter l'instruction SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME="tableName".

Dans l'ensemble de résultats, le traitement ultérieur nécessite généralement les colonnes d'informations de tableau suivantes.

< td>NULLABLE< /table>

convertit enfin les informations SQL en informations Java via le mappage de types (JavaTypeResolver) en Map<Integer, JdbcTypeInformation> typeMap et la conversion de dénomination de cas de chameau (StringUtils) en getCamelCaseString.

Classe de génération de fichiers FileGenerator

Cette classe combine des données dans un fichier de code cible via le FreeMarkermoteur de modèles.

La logique principale est la suivante :

/**
* @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());
}
Copier après la connexion

Remarque

Lors des tests, Class.class.getClass().getResource("/").getPath();Cette méthode peut obtenir le répertoire racine du projet, mais en test, cette méthode est valide lorsque le package Jar est généré. Par conséquent, avant de générer le package Jar, vous devez modifier cette ligne en new File("").getAbsolutePath(); pour obtenir le chemin de génération.

Structure du projet

Explication détaillée de la conception et de la mise en œuvre du générateur de code de modèle Web Java

Exemple de fichier de configuration

generatorConfig.properties

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
Copier après la connexion

Exemple de commande d'exécution

java -jar JavaWebCodeGenerator.jar -configfile generatorConfig.properties -overwrite
Copier après la connexion

Exemple de démonstration

Explication détaillée de la conception et de la mise en œuvre du générateur de code de modèle Web Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Générateur de photos d'identité IA : lors de tests réels, le logiciel IA a démontré des performances uniques et puissantes Générateur de photos d'identité IA : lors de tests réels, le logiciel IA a démontré des performances uniques et puissantes Aug 09, 2023 pm 07:33 PM

Après des tests réels, le générateur de photos AI ID a bien fonctionné et ses fonctions puissantes sont étonnantes. Vous n'avez vraiment plus à vous soucier de prendre des photos ! Cette phrase est réécrite comme suit : Utilisez le logiciel Chuzhan AI (les droits d'auteur et d'interprétation appartiennent à Chuzhan AI et ne sont utilisés que pour montrer l'effet généré) en mode croquis : Que ce soit dans le travail quotidien ou dans un bureau d'affaires, l'image professionnelle est cruciale. Une belle photo d’identité peut valoriser son image professionnelle. Les photos d'identité générées par l'IA répondent non seulement aux normes photographiques traditionnelles, mais peuvent également restaurer les traits uniques du visage d'une personne. La technologie IA peut identifier intelligemment les contours du visage, la couleur de la peau, l'éclairage et d'autres détails pour générer la photo d'identité la plus appropriée. Qu'il s'agisse de l'apparence ou du tempérament, il peut être parfaitement affiché et laisser une première impression profonde aux gens. L'IA génère des photos d'identité en un seul clic.

Comment rédiger un générateur simple de rapports sur les performances des étudiants en utilisant Java ? Comment rédiger un générateur simple de rapports sur les performances des étudiants en utilisant Java ? Nov 03, 2023 pm 02:57 PM

Comment rédiger un générateur simple de rapports sur les performances des étudiants en utilisant Java ? Student Performance Report Generator est un outil qui aide les enseignants ou les éducateurs à générer rapidement des rapports sur les performances des élèves. Cet article explique comment utiliser Java pour rédiger un simple générateur de rapports sur les performances des étudiants. Tout d’abord, nous devons définir l’objet étudiant et l’objet note étudiant. L'objet étudiant contient des informations de base telles que le nom et le numéro de l'étudiant, tandis que l'objet score de l'étudiant contient des informations telles que les résultats des matières et la note moyenne de l'étudiant. Voici la définition d'un objet étudiant simple : public

Meilleur générateur d'art d'animation IA gratuit Meilleur générateur d'art d'animation IA gratuit Feb 19, 2024 pm 10:50 PM

Si vous êtes impatient de trouver le meilleur générateur gratuit d'art d'animation IA, vous pouvez mettre fin à votre recherche. Le monde de l’art anime captive le public depuis des décennies avec ses personnages uniques, ses couleurs captivantes et ses intrigues captivantes. Cependant, créer de l’art anime nécessite du talent, des compétences et beaucoup de temps. Cependant, avec le développement continu de l'intelligence artificielle (IA), vous pouvez désormais explorer le monde de l'art d'animation sans avoir à vous plonger dans des technologies complexes à l'aide du meilleur générateur d'art d'animation IA gratuit. Cela vous ouvrira de nouvelles possibilités pour libérer votre créativité. Qu'est-ce qu'un générateur d'art anime IA ? L'AI Animation Art Generator utilise des algorithmes sophistiqués et des techniques d'apprentissage automatique pour analyser une vaste base de données d'œuvres d'animation. Grâce à ces algorithmes, le système apprend et identifie différents styles d'animation

Générateurs en PHP7 : Comment gérer efficacement des données à grande échelle et économiser de la mémoire ? Générateurs en PHP7 : Comment gérer efficacement des données à grande échelle et économiser de la mémoire ? Oct 20, 2023 pm 04:42 PM

Générateurs en PHP7 : Comment gérer efficacement des données à grande échelle et économiser de la mémoire ? Présentation : PHP7 présente les générateurs comme un outil puissant en termes de traitement de données à grande échelle et d'économie de mémoire. Les générateurs sont un type spécial de fonction dans le langage PHP. Contrairement aux fonctions ordinaires, les générateurs peuvent suspendre l'exécution et renvoyer des résultats intermédiaires au lieu de renvoyer tous les résultats en même temps. Cela rend le générateur idéal pour traiter de gros lots de données, réduisant ainsi l'utilisation de la mémoire et améliorant l'efficacité du traitement. Cet article présentera aux étudiants

Comment écrire un simple générateur de code QR via PHP Comment écrire un simple générateur de code QR via PHP Sep 24, 2023 am 08:49 AM

Comment écrire un simple générateur de code QR via PHP Les codes QR sont devenus très courants dans la société moderne. Ils peuvent transmettre rapidement des informations et améliorer l'expérience utilisateur. Dans cet article, je vais vous présenter comment écrire un simple générateur de code QR en utilisant PHP. 1. Installez les outils et bibliothèques nécessaires Avant de commencer, nous devons nous assurer que les outils et bibliothèques suivants ont été installés : PHP : Assurez-vous que la dernière version de PHP est installée. Vous pouvez vérifier la version actuelle de PHP en exécutant le fichier php. Commande -v. Compositeur : C

Générateurs en PHP7 : Comment gérer efficacement de grandes quantités de données et un chargement paresseux ? Générateurs en PHP7 : Comment gérer efficacement de grandes quantités de données et un chargement paresseux ? Oct 27, 2023 pm 07:31 PM

Le concept de générateur (Generator) a été introduit dans PHP7, qui fournit une méthode pour gérer efficacement de grandes quantités de données et le chargement paresseux. Cet article commencera par des concepts et des principes, combinés à des exemples de code spécifiques, pour présenter l'utilisation et les avantages des générateurs en PHP7. Un générateur est une fonction spéciale qui, au lieu de renvoyer toutes les données en même temps, génère des données à la demande. Lorsque la fonction exécute l'instruction rendement, la valeur actuellement générée sera renvoyée et l'état de la fonction sera enregistré. La prochaine fois que la fonction génératrice sera appelée, la fonction

Utilisez ChatGPT pour créer de grands modèles en quelques secondes ! Le nouveau plug-in d'OpenAI est fou, connectez-vous à l'interpréteur de code et obtenez-le en un clic Utilisez ChatGPT pour créer de grands modèles en quelques secondes ! Le nouveau plug-in d'OpenAI est fou, connectez-vous à l'interpréteur de code et obtenez-le en un clic Apr 04, 2023 am 11:30 AM

Une fois ChatGPT connecté à Internet, OpenAI a également rapidement introduit un générateur de code. Avec la prise en charge de ce plug-in, ChatGPT peut même générer son propre modèle d'apprentissage automatique. Vendredi dernier, OpenAI vient d'annoncer la nouvelle choquante selon laquelle ChatGPT peut se connecter à Internet et se connecter à des plug-ins tiers ! En plus des plug-ins tiers, OpenAI a également introduit son propre plug-in « Code Interpreter » et a proposé plusieurs cas d'utilisation particuliers : résolution de problèmes mathématiques quantitatifs et qualitatifs ; analyse et visualisation de données et conversion rapide de formats de fichiers ; De plus, Greg Brockman a démontré que ChatGPT peut également traiter les fichiers vidéo téléchargés. Et un auteur à succès nommé Andrew Mayne

Quelle est la différence entre les itérateurs et les générateurs en Python ? Quelle est la différence entre les itérateurs et les générateurs en Python ? Oct 20, 2023 pm 07:10 PM

Quelle est la différence entre les itérateurs et les générateurs en Python ? En programmation Python, les itérateurs et les générateurs sont des outils utilisés pour traiter des objets itérables. Les deux peuvent être utilisés pour parcourir des données, mais il existe quelques différences dans la mise en œuvre. Un itérateur est un objet qui implémente le protocole itérateur. L'objet itérateur doit contenir deux méthodes : __iter__() et __next__(). Que

See all articles
ChampDescription
DATA_TYPEType de données
字段描述
DATA_TYPE数据类型
COLUMN_SIZE数据长度
COLUMN_NANE列名
NULLABLE是否允许非空
DECIMAL_DIGITS小数位数
REMARKS备注
COLUMN_DEF默认值
COLUMN_SIZELongueur des données
COLUMN_NANENom de la colonne
Si les valeurs non nulles sont autorisées
DECIMAL_DIGITSChiffres décimaux
REMARQUESRemarques
COLUMN_DEFValeur par défaut