screw是一個(gè)簡(jiǎn)潔好用的數(shù)據(jù)庫(kù)表結(jié)構(gòu)文檔的生成工具 ,支持 MySQL、、等主流的關(guān)系數(shù)據(jù)庫(kù) 。
以往我們手寫(xiě)過(guò)數(shù)據(jù)庫(kù)表結(jié)構(gòu)文檔,一通無(wú)腦的CV 大法之后jsp用什么數(shù)據(jù)庫(kù)好,幾十頁(yè)至上百頁(yè)的Word 文檔就出爐了 。screw是一款可以幫我們偷懶高效的自動(dòng)生成數(shù)據(jù)庫(kù)表結(jié)構(gòu)文檔,解放生產(chǎn)力神器 。
screw也適合新入職的新同事熟悉系統(tǒng)數(shù)據(jù)庫(kù)表結(jié)構(gòu)、字段設(shè)計(jì) , 理解業(yè)務(wù) 。
即簡(jiǎn)而言之screw是一個(gè)簡(jiǎn)潔好用的數(shù)據(jù)庫(kù)表結(jié)構(gòu)文檔生成器 。
地址:
2.生成的文檔格式
生成的文檔有 html、word、三種格式j(luò)sp用什么數(shù)據(jù)庫(kù)好,示例如下圖所示:
a、html
b、word
c、
3.支持的數(shù)據(jù)庫(kù)
最新版本1.0.5已支持H2、達(dá)夢(mèng)數(shù)據(jù)庫(kù) 。
4.生成文檔的方式
(1)使用 Java 代碼(以下代碼演示了MySQL、、三種數(shù)據(jù)源)
相關(guān)依賴(lài)maven倉(cāng)庫(kù)最新版本:
第一步:引入screw相關(guān)maven依賴(lài)
cn.smallbun.screwscrew-core1.0.5com.zaxxerHikariCP3.4.5mysqlmysql-connector-java8.0.20com.oracle.ojdbcojdbc819.3.0.0cn.easyprojectorai18n12.1.0.2.0
第二步:編寫(xiě)代碼
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修飾的參數(shù) 如果是基于SpringBoot項(xiàng)目,可以在配置文件中配置,通過(guò)@Value注解獲取// MySQL驅(qū)動(dòng) 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";// 數(shù)據(jù)庫(kù)種類(lèi) MySQLOracleSQLServerprivate static final String DB_TYPE = "MySQL"; //private static final String Driver_Class_Name = "oracle.jdbc.driver.OracleDriver";// Oracle驅(qū)動(dòng) //private static final String Driver_Class_Name = "com.microsoft.sqlserver.jdbc.SQLServerDriver";// SQLServer驅(qū)動(dòng)// 數(shù)據(jù)庫(kù)URL/** 不同數(shù)據(jù)庫(kù)格式示例* MySQLjdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=utf-8jdbc:mysql://IP:端口/數(shù)據(jù)庫(kù)名稱(chēng)* Oracle jdbc:oracle:thin:@127.0.0.1:1521:orcljdbc.url=jdbc:oracle:thin:@IP:端口:實(shí)例名(sid)* SqlServer jdbc:sqlserver://127.0.0.1:1433;instanceName=sqlserver2005;DatabaseName=easysite_2005* jdbc:sqlserver://IP:端口;instanceName=sqlserver2005(版本);DatabaseName=easysite_2005(數(shù)據(jù)庫(kù)名稱(chēng))*/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數(shù)據(jù)庫(kù)名、Oracle實(shí)例名、SQLServer版本名和數(shù)據(jù)庫(kù)名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";// 生成數(shù)據(jù)庫(kù)文檔文件路徑 可根據(jù)本機(jī)電腦自行配置private static final String FILE_OUTPUT_DIR = "/Users/mac/screw_test";private static final String DOC_FILE_NAME = "某某系統(tǒng)數(shù)據(jù)庫(kù)文檔";// 自定義文件名稱(chēng) 即數(shù)據(jù)庫(kù)文檔名稱(chēng)private static final EngineFileType FILE_OUTPUT_TYPE = EngineFileType.WORD; // 文件類(lèi)型 HTML->HTML文件WORD->WORD文件MD->Markdown文件private static final String DOC_VERSION = "1.0.0";private static final String DOC_DESCRIPTION = "數(shù)據(jù)庫(kù)設(shè)計(jì)文檔生成";public static void main(String[] args) {documentGeneration();}/*** 數(shù)據(jù)庫(kù)文檔生成*/public static void documentGeneration() {// 數(shù)據(jù)源創(chuàng)建HikariConfig配置類(lèi)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);// 設(shè)置useInformationSchema 可以獲取tables表注釋信息 即解決數(shù)據(jù)庫(kù)表和列字段有說(shuō)明、生成文檔沒(méi)有說(shuō)明hikariConfig.addDataSourceProperty("useInformationSchema", "true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSource dataSource = new HikariDataSource(hikariConfig);//創(chuàng)建screw的引擎配置EngineConfig engineConfig = EngineConfig.builder()// 生成文件路徑.fileOutputDir(FILE_OUTPUT_DIR)// 打開(kāi)目錄.openOutputDir(true)// 文件類(lèi)型 HTML->HTML文件WORD->WORD文件MD->Markdown文件.fileType(FILE_OUTPUT_TYPE)// 生成模板實(shí)現(xiàn).produceType(EngineTemplateType.freemarker)// 自定義文件名稱(chēng),即數(shù)據(jù)庫(kù)文檔名稱(chēng).fileName(DOC_FILE_NAME).build();// 創(chuàng)建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");// 需要生成數(shù)據(jù)庫(kù)文檔的表ArrayList designatedTableName = new ArrayList();designatedTableName.add("t_user");designatedTableName.add("t_role");// 需要生成數(shù)據(jù)庫(kù)文檔的表前綴ArrayList designatedTablePrefix = new ArrayList();designatedTablePrefix.add("t_");ProcessConfig processConfig = ProcessConfig.builder()// 指定生成邏輯、當(dāng)存在指定表、指定表前綴、指定表后綴時(shí),將生成指定表,其余表不生成、并跳過(guò)忽略表配置// 根據(jù)名稱(chēng)指定表生成 //.designatedTableName(Arrays.asList("t_user","t_role")).designatedTableName(designatedTableName)// 根據(jù)表前綴生成.designatedTablePrefix(designatedTablePrefix)// 根據(jù)表后綴生成.designatedTableSuffix(new ArrayList())// 忽略表名.ignoreTableName(ignoreTableName)// 忽略表前綴.ignoreTablePrefix(ignorePrefix)// 忽略表后綴.ignoreTableSuffix(ignoreSuffix).build();//創(chuàng)建screw的配置Configuration config = Configuration.builder()// 版本.version(DOC_VERSION)// 描述.description(DOC_DESCRIPTION)// 數(shù)據(jù)源.dataSource(dataSource)// 生成配置.engineConfig(engineConfig)// 生成配置.produceConfig(processConfig).build();// 執(zhí)行screw , 生成數(shù)據(jù)庫(kù)文檔new DocumentationExecute(config).execute();} }
【一款好用的數(shù)據(jù)庫(kù)文檔生成工具-Screw】本文到此結(jié)束,希望對(duì)大家有所幫助 。
- ?江米面用的是什么水和面
- 母親節(jié)禮物送什么好
- 燃?xì)庠畹淖笤詈陀以钣惺裁磪^(qū)別?如何選擇好用的燃?xì)庠睿?
- 李大爺?shù)木乒裰械暮镁仆扑]
- 晚上擺小攤,套圈小攤是個(gè)好選擇嗎?
- 35女性用什么品牌的護(hù)膚品 ?35歲的女人適合用什么護(hù)膚品比較好
- 孩子總是“墨跡”?家長(zhǎng)懂得這三點(diǎn),不吼不叫也能教出自律好孩子
- 福城天虹購(gòu)物中心
- 那些我去過(guò)一次才知道的事
- 花式玩法清涼燥浪
