一款好用的数据库文档生成工具-Screw

screw是一个简洁好用的数据库表结构文档的生成工具 ,支持 MySQL、、等主流的关系数据库 。
以往我们手写过数据库表结构文档,一通无脑的CV 大法之后jsp用什么数据库好,几十页至上百页的Word 文档就出炉了 。screw是一款可以帮我们偷懒高效的自动生成数据库表结构文档,解放生产力神器 。
screw也适合新入职的新同事熟悉系统数据库表结构、字段设计 , 理解业务 。
即简而言之screw是一个简洁好用的数据库表结构文档生成器 。
地址:
2.生成的文档格式
生成的文档有 html、word、三种格式jsp用什么数据库好,示例如下图所示:
a、html
b、word
c、
3.支持的数据库
最新版本1.0.5已支持H2、达梦数据库 。
4.生成文档的方式
(1)使用 Java 代码(以下代码演示了MySQL、、三种数据源)
相关依赖maven仓库最新版本:
第一步:引入screw相关maven依赖
cn.smallbun.screwscrew-core1.0.5com.zaxxerHikariCP3.4.5mysqlmysql-connector-java8.0.20com.oracle.ojdbcojdbc819.3.0.0cn.easyprojectorai18n12.1.0.2.0
第二步:编写代码
package com.example.screw;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.ArrayList; import java.util.Arrays;public class DocGeneration {// 以下static final修饰的参数 如果是基于SpringBoot项目,可以在配置文件中配置,通过@Value注解获取// MySQL驱动 6.0以前的使用com.mysql.jdbc.Driver,6.0以后的使用com.mysql.cj.jdbc.Driver我这边使用的是8.0.20版本的private static final String Driver_Class_Name = "com.mysql.cj.jdbc.Driver";// 数据库种类 MySQLOracleSQLServerprivate static final String DB_TYPE = "MySQL"; //private static final String Driver_Class_Name = "oracle.jdbc.driver.OracleDriver";// Oracle驱动 //private static final String Driver_Class_Name = "com.microsoft.sqlserver.jdbc.SQLServerDriver";// SQLServer驱动// 数据库URL/** 不同数据库格式示例* MySQLjdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=utf-8jdbc:mysql://IP:端口/数据库名称* Oracle jdbc:oracle:thin:@127.0.0.1:1521:orcljdbc.url=jdbc:oracle:thin:@IP:端口:实例名(sid)* SqlServer jdbc:sqlserver://127.0.0.1:1433;instanceName=sqlserver2005;DatabaseName=easysite_2005* jdbc:sqlserver://IP:端口;instanceName=sqlserver2005(版本);DatabaseName=easysite_2005(数据库名称)*/private static final String DB_URL = "jdbc:mysql://127.0.0.1:3306";// MySQL //private static final String DB_URL = "jdbc:oracle:thin:@127.0.0.1:1521";// Oracle //private static final String DB_URL = "jdbc:sqlserver://127.0.0.1:1433";// SQLServerprivate static final String IGNORE_MISTAKEN_CODE= "?characterEncoding=UTF-8";//防止生成后文档乱码//MySQL数据库名、Oracle实例名、SQLServer版本名和数据库名private static final String DB_NAME = "seckill";// MySQL //private static final String DB_NAME = "orcl";// Oracle //private static final String DB_NAME = ";instanceName=sqlserver2005;DatabaseName=easysite_2005";// SQLServerprivate static final String DB_USERNAME = "root";private static final String DB_PASSWORD = "root";// 生成数据库文档文件路径 可根据本机电脑自行配置private static final String FILE_OUTPUT_DIR = "/Users/mac/screw_test";private static final String DOC_FILE_NAME = "某某系统数据库文档";// 自定义文件名称 即数据库文档名称private static final EngineFileType FILE_OUTPUT_TYPE = EngineFileType.WORD; // 文件类型 HTML->HTML文件WORD->WORD文件MD->Markdown文件private static final String DOC_VERSION = "1.0.0";private static final String DOC_DESCRIPTION = "数据库设计文档生成";public static void main(String[] args) {documentGeneration();}/*** 数据库文档生成*/public static void documentGeneration() {// 数据源创建HikariConfig配置类HikariConfig hikariConfig = new HikariConfig();hikariConfig.setDriverClassName(Driver_Class_Name);if("MySQL".equals(DB_TYPE)){hikariConfig.setJdbcUrl(DB_URL + "/" + DB_NAME+IGNORE_MISTAKEN_CODE);}else if("Oracle".equals(DB_TYPE)){hikariConfig.setJdbcUrl(DB_URL + ":" + DB_NAME);}else if("SQLServer".equals(DB_TYPE)){hikariConfig.setJdbcUrl(DB_URL + DB_NAME);}hikariConfig.setUsername(DB_USERNAME);hikariConfig.setPassword(DB_PASSWORD);// 设置useInformationSchema 可以获取tables表注释信息 即解决数据库表和列字段有说明、生成文档没有说明hikariConfig.addDataSourceProperty("useInformationSchema", "true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSource dataSource = new HikariDataSource(hikariConfig);//创建screw的引擎配置EngineConfig engineConfig = EngineConfig.builder()// 生成文件路径.fileOutputDir(FILE_OUTPUT_DIR)// 打开目录.openOutputDir(true)// 文件类型 HTML->HTML文件WORD->WORD文件MD->Markdown文件.fileType(FILE_OUTPUT_TYPE)// 生成模板实现.produceType(EngineTemplateType.freemarker)// 自定义文件名称,即数据库文档名称.fileName(DOC_FILE_NAME).build();// 创建screw的处理配置,一般可忽略// 忽略表ArrayList ignoreTableName = new ArrayList();ignoreTableName.add("test_user");ignoreTableName.add("test_group");// 忽略表前缀ArrayList ignorePrefix = new ArrayList();ignorePrefix.add("test_");// 忽略表后缀ArrayList ignoreSuffix = new ArrayList();ignoreSuffix.add("_test");// 需要生成数据库文档的表ArrayList designatedTableName = new ArrayList();designatedTableName.add("t_user");designatedTableName.add("t_role");// 需要生成数据库文档的表前缀ArrayList designatedTablePrefix = new ArrayList();designatedTablePrefix.add("t_");ProcessConfig processConfig = ProcessConfig.builder()// 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置// 根据名称指定表生成 //.designatedTableName(Arrays.asList("t_user","t_role")).designatedTableName(designatedTableName)// 根据表前缀生成.designatedTablePrefix(designatedTablePrefix)// 根据表后缀生成.designatedTableSuffix(new ArrayList())// 忽略表名.ignoreTableName(ignoreTableName)// 忽略表前缀.ignoreTablePrefix(ignorePrefix)// 忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();//创建screw的配置Configuration config = Configuration.builder()// 版本.version(DOC_VERSION)// 描述.description(DOC_DESCRIPTION)// 数据源.dataSource(dataSource)// 生成配置.engineConfig(engineConfig)// 生成配置.produceConfig(processConfig).build();// 执行screw , 生成数据库文档new DocumentationExecute(config).execute();} }
【一款好用的数据库文档生成工具-Screw】本文到此结束,希望对大家有所帮助 。