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.screw screw-core 1.0.5 com.zaxxer HikariCP 3.4.5 mysql mysql-connector-java 8.0.20 com.oracle.ojdbc ojdbc8 19.3.0.0 cn.easyproject orai18n 12.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"; // 数据库种类 MySQL Oracle SQLServer private 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 /** 不同数据库格式示例 * MySQL jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=utf-8 jdbc:mysql://IP:端口/数据库名称 * Oracle jdbc:oracle:thin:@127.0.0.1:1521:orcl jdbc.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";// SQLServer private 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";// SQLServer private 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(); } }
本文到此结束,希望对大家有所帮助。
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至81118366@qq.com举报,一经查实,本站将立刻删除。发布者:简知小编,转载请注明出处:https://www.jianzixun.com/93676.html