软件编程
位置:首页>> 软件编程>> java编程>> java如何实现自动生成数据库设计文档

java如何实现自动生成数据库设计文档

作者:java李杨勇  发布时间:2023-08-07 19:01:28 

标签:java,自动生成,文档

前言

以前我们还需要手写数据库设计文档、现在可以通过引入screw核心包来实现Java 数据库文档一键生成。话不多说、直接上代码演示。

支持的数据库列表:

  • MySQL

  • MariaDB

  • TIDB

  • Oracle

  • SqlServer

  • PostgreSQL

  • 这些主流的数据库都支持的。

实现步骤

引入 pom.xml核心配置screw包


      <dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.5</version>
</dependency>

main方法类全部代码


package com.railway.modules.sys.controller;

/**
* Created by LiYangYong on 2021/11/11
*/

import cn.smallbun.screw.core.Configuration;
import cn.smallbun.screw.core.engine.EngineConfig;
import cn.smallbun.screw.core.engine.EngineFileType;
import cn.smallbun.screw.core.engine.EngineTemplateType;
import cn.smallbun.screw.core.execute.DocumentationExecute;
import cn.smallbun.screw.core.process.ProcessConfig;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import javax.sql.DataSource;
import java.util.Arrays;
import java.util.Collections;

/**
* Created by LiYangYong on 2021/11/11.
*/
public class TestScrewMain {
   private static final String DB_URL = "jdbc:mysql://localhost:3307";
   private static final String DB_NAME = "renren_fast?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
   private static final String DB_USERNAME = "root";
   private static final String DB_PASSWORD = "crit@2019";

private static final String FILE_OUTPUT_DIR = "C:\\Users\\Administrator\\Desktop\\java\\";
   // 可以设置 Word 或者 Markdown 格式
   private static final EngineFileType FILE_OUTPUT_TYPE = EngineFileType.WORD;
   private static final String DOC_FILE_NAME = "数据库表设计文档";
   private static final String DOC_VERSION = "V1.0.0";
   private static final String DOC_DESCRIPTION = "数据库表设计描述";

public static void main(String[] args) {
       // 创建 screw 的配置
       Configuration config = Configuration.builder()
               // 版本
               .version(DOC_VERSION)
               // 描述
               .description(DOC_DESCRIPTION)
               // 数据源
               .dataSource(buildDataSource())
               // 引擎配置
               .engineConfig(buildEngineConfig())
               // 处理配置
               .produceConfig(buildProcessConfig())
               .build();

// 执行 screw,生成数据库文档
       new DocumentationExecute(config).execute();
   }

/**
    * 创建数据源
    */
   private static DataSource buildDataSource() {
       // 创建 HikariConfig 配置类
       HikariConfig hikariConfig = new HikariConfig();
       hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
       hikariConfig.setJdbcUrl(DB_URL + "/" + DB_NAME);
       hikariConfig.setUsername(DB_USERNAME);
       hikariConfig.setPassword(DB_PASSWORD);
       // 设置可以获取 tables remarks 信息
       hikariConfig.addDataSourceProperty("useInformationSchema", "true");
       // 创建数据源
       return new HikariDataSource(hikariConfig);
   }

/**
    * 创建 screw 的引擎配置
    */
   private static EngineConfig buildEngineConfig() {
       return EngineConfig.builder()
               // 生成文件路径
               .fileOutputDir(FILE_OUTPUT_DIR)
               // 打开目录
               .openOutputDir(false)
               // 文件类型
               .fileType(FILE_OUTPUT_TYPE)
               // 文件类型
               .produceType(EngineTemplateType.freemarker)
               // 自定义文件名称
               .fileName(DOC_FILE_NAME)
               .build();
   }

/**
    * 创建 screw 的处理配置,一般可忽略
    * 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
    */
   private static ProcessConfig buildProcessConfig() {
       return ProcessConfig.builder()
               // 根据名称指定表生成
               .designatedTableName(Collections.<String>emptyList())
               // 根据表前缀生成
               .designatedTablePrefix(Collections.<String>emptyList())
               // 根据表后缀生成
               .designatedTableSuffix(Collections.<String>emptyList())
               // 忽略表名
               .ignoreTableName(Arrays.asList("test", "mytable","role","t_role","t_user"))
               // 忽略表前缀
               //.ignoreTablePrefix(Collections.singletonList("t_"))
               // 忽略表后缀
               //.ignoreTableSuffix(Collections.singletonList("_test"))
               .build();
   }

}

生成的数据库设计文档演示

 java如何实现自动生成数据库设计文档

表qrtz_blob_triggers

java如何实现自动生成数据库设计文档

表qrtz_calendars

java如何实现自动生成数据库设计文档

表qrtz_cron_triggers

java如何实现自动生成数据库设计文档

 这样就解放双手拉 。

来源:https://blog.csdn.net/weixin_39709134/article/details/121271813

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com