如何生成数据库说明文档

使用screw生成数据库说明文档,输出格式可以选择 HTML、Markdown、Work,一键生成。

Posted by Shrmars Blog on June 24, 2022

1、引入Maven依赖

1
2
3
4
5
6
7
8
9
10
11
<!-- screw 生成数据库文档 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>
        <dependency>
            <groupId>cn.smallbun.screw</groupId>
            <artifactId>screw-core</artifactId>
            <version>1.0.3</version>
        </dependency>

2、添加生成控制代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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.HikariDataSource;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * <h1>数据库表文档生成</h1>
 * */
//@SpringBootTest
//@RunWith(SpringRunner.class)
public class DBDocTest {

    @Autowired
    private ApplicationContext applicationContext;

    @Test
    public void buildDBDoc() {

        HikariDataSource dataSourceMysql = new HikariDataSource();
        dataSourceMysql.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSourceMysql.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/micro_iam?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai");
        dataSourceMysql.setUsername("root");
        dataSourceMysql.setPassword("root");


        // 生成文件配置
        EngineConfig engineConfig = EngineConfig.builder()
                // 生成文件路径
                .fileOutputDir("D:/software")
                // 打开目录
                .openOutputDir(false)
                // 文件类型
                .fileType(EngineFileType.HTML)
                .produceType(EngineTemplateType.freemarker).build();

        // 生成文档配置, 包含自定义版本号、描述等等
        // 数据库名_description_version.html
        Configuration config = Configuration.builder()
                .version("1.0.0")
                .description("IAM系统数据库文档")
                .dataSource(dataSourceMysql)
                .engineConfig(engineConfig)
                .produceConfig(getProduceConfig())
                .build();

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

    /**
     * <h2>配置想要生成的数据表和想要忽略的数据表</h2>
     * */
    private ProcessConfig getProduceConfig() {

        // 想要忽略的数据表
        List<String> ignoreTableName = Collections.singletonList("undo_log");
        // 忽略表前缀, 忽略 a、b 开头的数据库表
        List<String> ignorePrefix = Arrays.asList("a", "b");
        // 忽略表后缀
        List<String> ignoreSuffix = Arrays.asList("_test", "_Test");

        return ProcessConfig.builder()
                // 根据名称指定表生成
                .designatedTableName(Collections.emptyList())
                // 根据表前缀生成
                .designatedTablePrefix(Collections.emptyList())
                // 根据表后缀生成
                .designatedTableSuffix(Collections.emptyList())
                // 忽略表
                .ignoreTableName(ignoreTableName)
                // 按照前缀忽略
                .ignoreTablePrefix(ignorePrefix)
                // 按照后缀忽略
                .ignoreTableSuffix(ignoreSuffix)
                .build();
    }
}

3、查看输出结果

dbdoc