screw 庫,簡潔好用的資料庫表結構文件生成器
阿新 • • 發佈:2022-03-16
<!-- screw 庫,簡潔好用的資料庫表結構文件生成器 -->
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.5</version>
</dependency>
package com.zhss.eshop.utils; 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; /** * @ClassName TestScrewMain * @Description TODO 使用 screw 生成文件 * @Author NingShi * @Date 2021/5/10 16:51 * @Version 1.0 */ public class TestScrewMain { private static final String DB_URL = "jdbc:mysql://localhost:3306"; private static final String DB_NAME = "eshop?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai"; private static final String DB_USERNAME = "root"; private static final String DB_PASSWORD = "Liwei123."; private static final String FILE_OUTPUT_DIR = "F:\\"; // 可以設定 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(); } }