跳至主要內容

数据库结构文档

chanchaw大约 1 分钟languagejava

概述

通过 freemarkerscrew 可生成项目数据库结构文档

案例

添加两个依赖

<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>

制作测试文件 \ecomm\ecomm-authority-center\src\test\java\com\xdf\DBDocTest.java 代码如下

package com.xdf;

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 org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;

import javax.sql.DataSource;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @author chanchaw
 * @create 2025-08-23 8:08
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class DBDocTest {
    @Autowired
    private ApplicationContext context;

    @Test
    public void buildDBDoc(){
        DataSource ds = context.getBean(DataSource.class);
        EngineConfig engineConfig = EngineConfig.builder().fileOutputDir("D:\\source\\java\\ecomm")
                .openOutputDir(true).fileType(EngineFileType.HTML).produceType(EngineTemplateType.freemarker).build();
        Configuration config = Configuration.builder().version("1.0.0").description("微服务电商实战").dataSource(ds)
                .engineConfig(engineConfig).produceConfig(getProcessConfig()).build();

        new DocumentationExecute(config).execute();
    }

    private ProcessConfig getProcessConfig(){
        List<String> ignoreTableName = Collections.singletonList("undo_log");
        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();
    }
}

运行后会在项目根目录下生成数据库文档