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
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.
Générateur configurable pour générer des codes de modèles de couches Dao, Meta et Service dans les projets Web Java.
mvn archetype:generate -DgroupId=com.zju -DartifactId=JavaWebCodeGenerator -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=internal
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
Analyser la ligne de commande
Analyser le fichier de configuration
Obtenir des informations sur la table de données
Générer des informations de configuration
Générer un fichier
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";
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(), "%");
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.
Champ | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DATA_TYPE |
Type de données
|
||||||||||||||||
COLUMN_SIZE | Longueur des données | ||||||||||||||||
COLUMN_NANE | Nom de la colonne | ||||||||||||||||
Si les valeurs non nulles sont autorisées | |||||||||||||||||
DECIMAL_DIGITS | Chiffres décimaux | ||||||||||||||||
REMARQUES | Remarques | ||||||||||||||||
COLUMN_DEF | Valeur par défaut |
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!