目录

screw 数据库表结构文档生成快速入门


screw 数据库表结构文档生成快速入门

1、screw (螺丝钉) 英:[skruː] ~ 简洁好用的数据库表结构文档生成工具

2、详细介绍参考官网:https://gitee.com/leshalv/screw

3、使用非常简单,直接从官网复制源码即可使用。需要注意的是:screw 1.0.5 版本时,cn.smallbun.screw.core.query.AbstractDatabaseQuery.getSchema 中会强转 DataSource 为 HikariDataSource,所以只支持 HikariDataSource 数据源。(Spring boot 默认 HikariCP 作为数据源.)

4、添加 screw  依赖:

        <!--数据库文档生成工具-->
        <!-- https://mvnrepository.com/artifact/cn.smallbun.screw/screw-core -->
        <dependency>
            <groupId>cn.smallbun.screw</groupId>
            <artifactId>screw-core</artifactId>
            <version>1.0.5</version>
        </dependency>

https://gitee.com/wangmx1993/jpa-transactional/blob/master/pom.xml

5、编写测试类或者访问接口生成数据库表文档,如果是需要对远程服务器上的数据库生成文档,则还需要在下面的基础上,将生成的文档文件做一个下载功能。

/** screw (螺丝钉) 英:[skruː] ~ 简洁好用的数据库表结构文档生成工具
 * @author wangMaoXiong
 * @version 1.0
 * @date 2022/5/22 10:35
 */
@RestController
public class DocGeneration {
    @Resource
    private DataSource dataSource;
    @Resource
    private JdbcTemplate jdbcTemplate;
    /**
     * http://localhost:8080/doc/generation
     * 数据库表结构文档生成工具
     */
    @GetMapping("doc/generation")
    public String documentGeneration() {
        // 获取桌面目录作为文档存放目录, 指定生成的文件名称
        File homeDirectory = FileSystemView.getFileSystemView().getHomeDirectory();
        String fileName = "数据库设计文档";
        // 生成的文件类型:HTML-> .html,WORD-> .doc、MD-> .md
        EngineFileType fileType = EngineFileType.HTML;

        // 数据源也可以从 Spring 容器中获取,或者通过 jdbcTemplate 获取.
        // screw 1.0.5 版本时, cn.smallbun.screw.core.query.AbstractDatabaseQuery.getSchema 中会强转为 HikariDataSource
        // 所以只支持 HikariDataSource 数据源(Spring boot 默认 HikariCP 作为数据源.)
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
        hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&serverTimezone=UTC");
        hikariConfig.setUsername("root");
        hikariConfig.setPassword("root");
        // 设置可以获取tables remarks信息
        hikariConfig.addDataSourceProperty("useInformationSchema", "true");
        hikariConfig.setMinimumIdle(2);
        hikariConfig.setMaximumPoolSize(5);
        DataSource dataSource = new HikariDataSource(hikariConfig);

        // 文件生成配置
        EngineConfig engineConfig = EngineConfig.builder()
                // 生成文件存放的目录
                .fileOutputDir(homeDirectory.getAbsolutePath())
                // 生成完成是否打开输出目录
                .openOutputDir(true)
                // 生成文件类型:HTML-> .html,WORD-> .doc、MD-> .md
                .fileType(fileType)
                // 生成模板实现
                .produceType(EngineTemplateType.freemarker)
                // 自定义文件名称
                .fileName(fileName).build();

        // 忽略指定名称的表
        ArrayList<String> ignoreTableName = new ArrayList<>();
        ignoreTableName.add("test_user");
        ignoreTableName.add("test_group");
        // 忽略指定名称前缀的表
        ArrayList<String> ignorePrefix = new ArrayList<>();
        ignorePrefix.add("test_");
        // 忽略指定名称后缀的表
        ArrayList<String> ignoreSuffix = new ArrayList<>();
        ignoreSuffix.add("_test");
        ignoreSuffix.add("_backup");

        // 数据处理配置
        ProcessConfig processConfig = ProcessConfig.builder()
                // 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
                // 根据名称指定表生成
                .designatedTableName(new ArrayList<>())
                // 根据表前缀生成
                .designatedTablePrefix(new ArrayList<>())
                // 根据表后缀生成
                .designatedTableSuffix(new ArrayList<>())
                // 忽略指定名称的表
                .ignoreTableName(ignoreTableName)
                // 忽略指定名称前缀的表
                .ignoreTablePrefix(ignorePrefix)
                // 忽略指定名称后缀的表
                .ignoreTableSuffix(ignoreSuffix).build();

        // Screw 配置入口
        Configuration config = Configuration.builder()
                // 版本
                .version("1.0.0")
                // 描述
                .description("数据库设计文档生成")
                // 数据源(可以自己单独配置,也可以直接从应用中获取)
                .dataSource(dataSource)
                // 文档生成配置
                .engineConfig(engineConfig)
                // 数据处理配置
                .produceConfig(processConfig)
                .build();
        // 执行生成文档
        new DocumentationExecute(config).execute();

        // 文档文件全路径, 如 E:\桌面\数据库设计文档.html
        String fullPath = homeDirectory + File.separator + fileName + fileType.getFileSuffix();
        return fullPath;
    }
}

https://gitee.com/wangmx1993/jpa-transactional/blob/master/src/main/java/com/wmx/controller/DocGeneration.java

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐