screw-core生成数据库表结构文档简单例子

使用screw-core优点:

1、轻量级‌:无复杂依赖,集成简单

2、多数据库支持:MySQL、MariaDB、Oracle、SQL Server、PostgreSQL、TiDB 等

3、多格式输出:HTML、Word、Markdown

4、高度可定制:支持忽略表、前缀/后缀过滤、自定义模板(Freemarker)

下面给出简单例子

一、添加相关依赖

复制代码
<dependency>
    <groupId>cn.smallbun.screw</groupId>
    <artifactId>screw-core</artifactId>
    <version>1.0.5</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>3.4.5</version>
</dependency>

二、创建生成类ScrewExportDemo,写个main方法

完整代码如下:

java 复制代码
import cn.smallbun.screw.core.Configuration;
import cn.smallbun.screw.core.engine.EngineConfig;
import cn.smallbun.screw.core.engine.EngineFileType;

import javax.sql.DataSource;

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 java.util.ArrayList;

public class ScrewExportDemo {
    public static void main(String[] args) {
        // 1. 配置数据源
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setJdbcUrl("jdbc:mysql://数据库ip:数据库端口/数据库名?useInformationSchema=true&characterEncoding=UTF-8");
        hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
        hikariConfig.setUsername("用户名");
        hikariConfig.setPassword("用户密码");
        hikariConfig.addDataSourceProperty("useInformationSchema", "true"); // 必须启用以获取注释
        DataSource dataSource = new HikariDataSource(hikariConfig);

        // 2. 配置生成引擎 (输出为 Word)
        EngineConfig engineConfig = EngineConfig.builder()
                .fileOutputDir("d:/screw-docs")  // 输出目录
                .openOutputDir(true)             // 生成后是否打开目录
                .fileType(EngineFileType.WORD)   // 文件类型:WORD, HTML, MD
                .produceType(EngineTemplateType.freemarker)
                .fileName("数据库设计文档")        // 文件名
                .build();

        // 忽略配置(可选)
        ProcessConfig processConfig = ProcessConfig.builder()
                .ignoreTableName(new ArrayList<String>() {{ add("test_order"); }})
                .ignoreTablePrefix(new ArrayList<String>() {{ add("test_"); }})
                .build();
        // 3. 配置生成参数
        Configuration config = Configuration.builder()
                .version("1.0.0")                // 文档版本
                .description("数据库表结构文档")   // 文档描述
                .dataSource(dataSource)    // 数据源
                .engineConfig(engineConfig)      // 引擎配置
                .produceConfig(processConfig) // 生产配置
                .build();

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

        System.out.println("数据库设计文档生成完成!");
    }
}

直接运行即可

相关推荐
yejqvow124 分钟前
如何在 Supabase 中安全实现用户“鼓掌”计数(防刷、防重放、防越权)
jvm·数据库·python
nashane10 分钟前
HarmonyOS 6学习:位置权限已开启却仍报错?深度解析与实战解决方案
学习·华为·harmonyos·harmonyos 5
m0_6784854511 分钟前
SQL利用窗口函数实现轻量级报表设计_实战技巧
jvm·数据库·python
m0_7478545213 分钟前
CSS实现卡片式布局_浮动元素与clearfix的应用
jvm·数据库·python
2401_8359568116 分钟前
如何处理SQL查询中的逻辑重叠:AND OR嵌套优先级
jvm·数据库·python
2301_7965885017 分钟前
Redis怎样优化大量Lua并发调用带来的CPU压力
jvm·数据库·python
2301_7965885020 分钟前
如何阻止 HTML 页面在 JavaScript 脚本执行完成前渲染
jvm·数据库·python
2301_7735536223 分钟前
mysql执行SQL查询时结果不一致_检查事务隔离级别设置与幻读
jvm·数据库·python
Pentane.24 分钟前
【力扣hot100】【Leetcode 15】三数之和|暴力枚举 双指针 算法笔记及打卡(14/100)
数据结构·笔记·算法·leetcode
m0_3776182325 分钟前
mysql如何解决乱码问题_检查客户端与服务器字符集一致性
jvm·数据库·python