数据库设计文档生成

其他 / 2024-08-07

日常开发中避免不了对数据库设计,而在验收环节往往需要提供数据库相关设计文档,本文主要介绍一款开源的文档生成工具:screw

官方文档: https://gitee.com/leshalv/screw
下面就介绍基于maven项目一键生成数据库设计文档
1:首先引入maven依赖


 <dependency>
           <groupId>cn.smallbun.screw</groupId>
           <artifactId>screw-core</artifactId>
           <version>1.0.5</version>
       </dependency>

2:编写单元测试类

@Test
public void documentGeneration() {

    // 文档生成路径
    String fileOutputPath = "D:\\database";

    // 数据源
    HikariConfig hikariConfig = new HikariConfig();
    // 指定数据库驱动
    hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
    // 设置数据库连接地址
    hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/xxx");
    // 设置数据库用户
    hikariConfig.setUsername("root");
    // 设置数据库密码
    hikariConfig.setPassword("123456");
    // 设置可以获取 tables remarks 信息
    hikariConfig.addDataSourceProperty("useInformationSchema", "true");
    hikariConfig.setMinimumIdle(2);
    hikariConfig.setMaximumPoolSize(5);

    DataSource dataSource = new HikariDataSource(hikariConfig);
    // 生成配置
    EngineConfig engineConfig = EngineConfig.builder()
            // 生成文件路径
            .fileOutputDir(fileOutputPath)
            // 打开目录
            .openOutputDir(true)
            // 文件类型 HTML、WORD、MD 三种类型
            .fileType(EngineFileType.WORD)
            // 生成模板实现
            .produceType(EngineTemplateType.freemarker)
            // 自定义文件名称
            .fileName("数据库设计文档")
            .build();

    // 忽略表
    ArrayList<String> ignoreTableName = new ArrayList<>();
    ignoreTableName.add("test_user");
    ignoreTableName.add("test_group");

    //忽略表前缀
    ArrayList<String> ignorePrefix = new ArrayList<>();
    ignorePrefix.add("sys_");

    //忽略表后缀
    ArrayList<String> ignoreSuffix = new ArrayList<>();
    ignoreSuffix.add("_test");
    
	//需要生成的表前缀
    List<String> designatedTablePrefix = new ArrayList<>();
    designatedTablePrefix.add("activity_");
    designatedTablePrefix.add("branch_");
    designatedTablePrefix.add("content_");
    designatedTablePrefix.add("coupon_");
    designatedTablePrefix.add("enterprise_");
    designatedTablePrefix.add("integral_");
    designatedTablePrefix.add("level_");
    designatedTablePrefix.add("product_");
    designatedTablePrefix.add("qa_");
    designatedTablePrefix.add("user_");

    ProcessConfig processConfig = ProcessConfig.builder()
            // 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
            // 根据名称指定表生成
            .designatedTableName(new ArrayList<>())
            // 根据表前缀生成
            .designatedTablePrefix(designatedTablePrefix)
            // 根据表后缀生成
            .designatedTableSuffix(new ArrayList<>())
            // 忽略表名
            .ignoreTableName(ignoreTableName)
            // 忽略表前缀
            .ignoreTablePrefix(ignorePrefix)
            // 忽略表后缀
            .ignoreTableSuffix(ignoreSuffix)
            .build();
    //配置
    Configuration config = Configuration.builder()
            // 版本
            .version("1.0.0")
            // 描述
            .description("数据库设计文档生成")
            // 数据源
            .dataSource(dataSource)
            // 生成配置
            .engineConfig(engineConfig)
            // 生成配置
            .produceConfig(processConfig)
            .build();

    //执行生成
    new DocumentationExecute(config).execute();
}

3:效果图展示

image