Github上一款一键生成数据库文档的大利器!

文章目录

  • 介绍
  • 快速开始
    • 表结构脚本
    • 基于 Java 代码
      • 引入 screw 及相关依赖
      • 代码编写
    • 基于 Maven 插件
      • 引入screw及相关依赖
      • 配置maven-plugins
      • 手动执行生成数据库文档
  • 成品地址

介绍

今天看了 Guide老哥 公众号(需要的朋友可以关注一波: JavaGuide)中的一篇文章,发现了一款好用的数据库文档生成工具。

在项目中开发中,有没有遇到过编写数据库说明文档。一般情况下,数据库说明文档中有着大量的数据库表结构,如果手动进行维护,将会耗费大量时间,这样就不能愉快的进行摸鱼了。

所以呢,为了解决这个问题,Github 上的大佬开源了一款数据库表结构文档自动生成工具 —— screw
在这里插入图片描述
screw项目地址:https://github.com/pingfangushi/screw 。

screw 翻译过来的意思就是螺丝钉,作者希望这个工具能够像螺丝钉一样切实地帮助到我们的开发工作。

目前的话,screw 已经支持市面上大部分常见的数据库比如 MySQL、MariaDB、Oracle、SqlServer、PostgreSQL、TiDB。

快速开始

表结构脚本

为了验证 screw 自动生成数据库表结构文档的效果,我们首先创建一个简单的存放博客数据的数据库表。

CREATE TABLE `screw-demo-blog` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`title` varchar(255) NOT NULL COMMENT '博客标题',`content` longtext NOT NULL COMMENT '博客内容',`description` varchar(255) DEFAULT NULL COMMENT '博客简介',`cover` varchar(255) DEFAULT NULL COMMENT '博客封面图片地址',`views` int(11) NOT NULL DEFAULT '0' COMMENT '博客阅读次数',`user_id` bigint(20) DEFAULT '0' COMMENT '发表博客的用户ID',`channel_id` bigint(20) NOT NULL COMMENT '博客分类ID',`recommend` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否推荐',`top` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否置顶',`comment` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否开启评论',`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COMMENT='博客';

基于 Java 代码

引入 screw 及相关依赖

创建一个普通的maven项目,导入以下依赖


<dependency><groupId>cn.smallbun.screwgroupId><artifactId>screw-coreartifactId><version>1.0.5version>
dependency>

<dependency><groupId>com.zaxxergroupId><artifactId>HikariCPartifactId><version>3.4.5version>
dependency>

<dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>8.0.20version>
dependency>

你可以通过下面的地址在 mvnrepository 获取最新版本的 screw。

https://mvnrepository.com/artifact/cn.smallbun.screw/screw-core

代码编写

生成数据库文档的代码的整个代码逻辑还是比较简单的,我们只需要经过下面 5 步即可:

1、获取数据库源

/*** 获取数据库源*/
private static DataSource getDataSource() {//数据源HikariConfig hikariConfig = new HikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test");hikariConfig.setUsername("root");hikariConfig.setPassword("root");//设置可以获取tables remarks信息hikariConfig.addDataSourceProperty("useInformationSchema", "true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);return new HikariDataSource(hikariConfig);
}

2、获取文件生成配置

/*** 获取文件生成配置*/
private static EngineConfig getEngineConfig() {//生成配置return EngineConfig.builder()//生成文件路径.fileOutputDir("/Users/guide/Documents/代码示例/screw-demo/doc")//打开目录.openOutputDir(true)//文件类型.fileType(EngineFileType.HTML)//生成模板实现.produceType(EngineTemplateType.freemarker)//自定义文件名称.fileName("数据库结构文档").build();
}

注意,如果不配置生成文件路径的话,默认也会存放在项目的 doc 目录下。

另外,我们这里指定生成的文件格式为 HTML。除了 HTML 之外,screw 还支持 Word 、Markdown 这两种文件格式。

3、获取数据库表的处理配置
可以在这里指定只生成哪些表结构(这个是可选项)

/*** 获取数据库表的处理配置,可忽略*/
private static ProcessConfig getProcessConfig() {return ProcessConfig.builder()// 指定只生成 blog 表.designatedTableName(new ArrayList<>(Collections.singletonList("screw-demo-blog"))).build();
}

这里进行设置需要忽略生成的表结构(这个也是可选项)

private static ProcessConfig getProcessConfig() {ArrayList<String> ignoreTableName = new ArrayList<>();ignoreTableName.add("test_user");ignoreTableName.add("test_group");ArrayList<String> ignorePrefix = new ArrayList<>();ignorePrefix.add("test_");ArrayList<String> ignoreSuffix = new ArrayList<>();ignoreSuffix.add("_test");return ProcessConfig.builder()//忽略表名.ignoreTableName(ignoreTableName)//忽略表前缀.ignoreTablePrefix(ignorePrefix)//忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();
}

如果以上设置都没有注定 ProcessConfig 进行配置的话,就会按照默认配置来!

4、生成 screw 完整配置

private static Configuration getScrewConfig(DataSource dataSource, EngineConfig engineConfig, ProcessConfig processConfig) {return Configuration.builder()//版本.version("1.0.0")//描述.description("数据库设计文档生成")//数据源.dataSource(dataSource)//生成配置.engineConfig(engineConfig)//生成配置.produceConfig(processConfig).build();
}

5、调用执行

private static Configuration getScrewConfig(DataSource dataSource, EngineConfig engineConfig, ProcessConfig processConfig) {return Configuration.builder()//版本.version("1.0.0")//描述.description("数据库设计文档生成")//数据源.dataSource(dataSource)//生成配置.engineConfig(engineConfig)//生成配置.produceConfig(processConfig).build();
}

生成结果效果展示(.html):
在这里插入图片描述

基于 Maven 插件

除了基于 Java 代码这种方式之外,你还可以通过 screw 提供的 Maven 插件来生成数据库文档。个人感觉maven插件的方式更加简单!

引入screw及相关依赖

这一步操作还是一样,保持不变


<dependency><groupId>cn.smallbun.screwgroupId><artifactId>screw-coreartifactId><version>1.0.5version>
dependency>

<dependency><groupId>com.zaxxergroupId><artifactId>HikariCPartifactId><version>3.4.5version>
dependency>

<dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>8.0.20version>
dependency>

配置maven-plugins

这里还是在以上的依赖 pom.xml 文件中进行配置:

<build><plugins><plugin><groupId>cn.smallbun.screwgroupId><artifactId>screw-maven-pluginartifactId><version>1.0.5version><dependencies><dependency><groupId>com.zaxxergroupId><artifactId>HikariCPartifactId><version>3.4.5version>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>8.0.20version>dependency>dependencies><configuration><username>rootusername><password>rootpassword><driverClassName>com.mysql.cj.jdbc.DriverdriverClassName><jdbcUrl>jdbc:mysql://127.0.0.1:3306/testjdbcUrl><fileType>MDfileType><openOutputDir>trueopenOutputDir><produceType>freemarkerproduceType><fileName>数据库结构文档fileName><description>数据库设计文档生成description><version>${project.version}version><title>数据库文档title>configuration><executions><execution><phase>compilephase><goals><goal>rungoal>goals>execution>executions>plugin>plugins>
build>

手动执行生成数据库文档

在这里插入图片描述
生成结果效果展示(.md):
在这里插入图片描述

成品地址

这里呢,我已经把以上的示例代码上传到我码云仓库中,需要的朋友直接clone下来就可以运行使用。
本博客示例代码获取地址:https://gitee.com/zhuziccEE/screw-code.git


如果感觉文章对你有帮助,就给点个赞吧!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部