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

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

前言

以前我们还需要手写数据库设计文档、现在可以通过引入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

标签:java,自动生成,文档
0
投稿

猜你喜欢

  • 浅析c# 线程同步

    2022-09-19 18:43:03
  • Android开发实现查询远程服务器的工具类QueryUtils完整实例

    2021-11-06 14:57:10
  • 通过c++11改进我们的模式之改进命令模式

    2023-03-02 01:58:00
  • Java 动态代理深入理解

    2023-04-13 10:54:21
  • Java中Scanner类与BufferReader类的不同点(非常详细)

    2023-07-07 01:21:18
  • java中找不到符号的解决方案

    2023-09-01 17:50:11
  • Android自定义横向滑动菜单的实现

    2022-08-26 03:57:14
  • 解决idea spring boot 修改html等不重启即时生效的问题

    2023-11-13 18:37:47
  • C#泛型类创建与使用的方法

    2023-02-28 21:26:36
  • Android框架Volley之利用Imageloader和NetWorkImageView加载图片的方法

    2023-07-06 00:21:08
  • java实现一个简单的网络爬虫代码示例

    2021-08-05 13:59:12
  • Java实现简单猜数字小游戏

    2023-11-28 08:10:07
  • C# 禁用鼠标中间键的方法

    2022-01-24 04:17:24
  • Java for循环几种写法整理

    2023-09-12 01:25:58
  • Android Apk反编译及加密教程

    2022-01-13 01:01:25
  • java页面中文乱码的解决办法

    2022-09-01 22:59:20
  • 如何写好一个Spring组件的实现步骤

    2023-01-08 20:24:12
  • eclipse实现ElGamal数字签名

    2023-11-26 07:52:47
  • C语言中的回调函数实例

    2021-09-27 08:37:12
  • SpringData如何通过@Query注解支持JPA语句和原生SQL语句

    2022-08-26 22:07:29
  • asp之家 软件编程 m.aspxhome.com