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("数据库设计文档生成完成!");
    }
}

直接运行即可

相关推荐
雪碧聊技术13 小时前
当数据库字段数大于Java实体类属性数时,MyBatis还能映射成功吗?一文详解
数据库·自动映射·mybatis映射机制·java实体类·宽容映射机制
Jetev13 小时前
如何确定SQL字段是否为空_使用IS NULL与IS NOT NULL
jvm·数据库·python
星幻元宇VR14 小时前
VR科普大空间:沉浸式公共教育新模式
科技·学习·安全·vr·虚拟现实
m0_7020365314 小时前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
代钦塔拉14 小时前
Qt4 vs Qt5 带参数信号槽的连接方式详解
开发语言·数据库·qt
2401_8463395614 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
@蓝莓果粒茶15 小时前
【Unity笔记】保姆级AssetBundle详解(含代码+避坑指南)
笔记·游戏·unity
zhaoyong22215 小时前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
2501_9010064715 小时前
C#怎么实现配置热更新 C#如何在运行时动态刷新配置文件不需要重启程序【技巧】
jvm·数据库·python
m0_4708576415 小时前
HTML怎么创建响应式图片备选方案_HTML srcset与sizes结构【详解】
jvm·数据库·python