当前位置: 首页 > article >正文

SpringBoot 数据库表结构文档生成

官方地址:https://github.com/pingfangushi/screw

screw 螺丝钉,支持以下数据库

  •  MySQL
  •  MariaDB
  •  TIDB
  •  Oracle
  •  SqlServer
  •  PostgreSQL
  •  Cache DB(2016)

生产文档支持

  •  html
  •  word
  •  markdown

开始

添加依赖

        <!-- 螺丝钉 -->
        <dependency>
            <groupId>cn.smallbun.screw</groupId>
            <artifactId>screw-core</artifactId>
            <version>1.0.5</version>
        </dependency>

 新建执行方法,当然可以使用juint或者controller,怎么方便怎么弄

只需要修改这些个常量就可以,不需要太多改动

import cn.smallbun.screw.core.engine.EngineFileType;
import cn.smallbun.screw.core.engine.EngineTemplateType;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description 数据库文档一键生产
 * @Author WangKun
 * @Date 2024/9/20 15:45
 * @Version
 */
public class GenerateDatabaseDocument {

    /**
     * @param args
     * @Description 数据文档
     * @Throws
     * @Return void
     * @Date 2024-09-20 16:34:50
     * @Author WangKun
     **/
    public static void main(String[] args) {
        DatabaseDocumentExecute.documentationExecute();
    }

    // 以下为数据库设置
    // 驱动
    public static final String DRIVER = "com.mysql.cj.jdbc.Driver";
    // 主机
    public static final String HOST = "127.0.0.1";
    // 端口号
    public static final String PORT = "3306";
    // 数据库
    public static final String DB = "数据库";
    // URL
    public static final String URL = "jdbc:mysql://" + HOST + ":" + PORT + "/" + DB + "?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true";
    // 用户名
    public static final String USER_NAME = "用户名";
    // 密码
    public static final String PASSWORD = "密码";

    // 以下库表设置
    // 忽略表名,多个使用逗号隔开,"",""
    public static final List<String> IGNORE_TABLE_NAME = List.of("");
    // 忽略表前缀,多个使用逗号隔开,"",""
    public static final List<String> IGNORE_PREFIX = List.of("t_", "c_");
    // 忽略表后缀,多个使用逗号隔开,"",""
    public static final List<String> IGNORE_SUFFIX = List.of("_t", "_c");

    // 以下是表指定生成
    // 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
    // 根据名称指定表生成
    public static final List<String> DESIGNATED_TABLE_NAME = new ArrayList<>();
    // 根据表前缀生成
    public static final List<String> DESIGNATED_TABLE_PREFIX = new ArrayList<>();
    // 根据表后缀生成
    public static final List<String> DESIGNATED_TABLE_SUFFIX = new ArrayList<>();

    //以下为生产文档设置
    // 文件名称
    public static final String FILE_NAME = "数据库文档";
    // 版本
    public static final String VERSION = "V1.0.0";
    // 文档描述
    public static final String DESCRIPTION = "数据库文档说明";
    // 输出路径
    public static final String OUTPUT_DIR = System.getProperty("user.home") + "/Desktop";
    // 文档生成类型
    public static final EngineFileType FILE_TYPE = EngineFileType.HTML;
    // 文档生成模板
    public static final EngineTemplateType PRODUCE_TYPE = EngineTemplateType.freemarker;

}

文档生产配置(这一块基本不需要动,只需要改动常量配置即可)


import cn.smallbun.screw.core.Configuration;
import cn.smallbun.screw.core.engine.EngineConfig;
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 javax.sql.DataSource;

import static com.harmonywisdom.GenerateDatabaseDocument.*;

/**
 * @Description 文档生产配置
 * @Author WangKun
 * @Date 2024/9/20 10:51
 * @Version
 */
public class DatabaseDocumentExecute {

    /**
     * @Description 生产文档
      * @param
     * @Throws
     * @Return void
     * @Date 2024-09-20 17:02:40
     * @Author WangKun
     **/
    public static void documentationExecute(){
        // 数据源
        DataSource dataSource = getDataSource();
        // 生成配置
        EngineConfig engineConfig = EngineConfig.builder()
                // 生成文件路径
                .fileOutputDir(OUTPUT_DIR)
                // 打开目录
                .openOutputDir(false)
                // 文件类型
                .fileType(FILE_TYPE)
                // 生成模板实现
                .produceType(PRODUCE_TYPE)
                // 自定义文件名称
                .fileName(FILE_NAME)
                .build();


        // 配置忽略的表
        ProcessConfig processConfig = ProcessConfig.builder()
                //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
                .designatedTableName(DESIGNATED_TABLE_NAME)
                .designatedTablePrefix(DESIGNATED_TABLE_PREFIX)
                .designatedTableSuffix(DESIGNATED_TABLE_SUFFIX)
                .ignoreTableName(IGNORE_TABLE_NAME)
                .ignoreTablePrefix(IGNORE_PREFIX)
                .ignoreTableSuffix(IGNORE_SUFFIX)
                .build();

        // 生成文档配置(包含以下自定义版本号、描述等配置连接)
        Configuration config = Configuration.builder()
                // 版本
                .version(VERSION)
                // 文档描述
                .description(DESCRIPTION)
                // 数据源
                .dataSource(dataSource)
                // 生产配置
                .engineConfig(engineConfig)
                // 忽略配置
                .produceConfig(processConfig)
                .build();
        // 执行生成
        new DocumentationExecute(config).execute();
    }

    /**
     * @Description 数据源配置
     * @param
     * @Throws
     * @Return javax.sql.DataSource
     * @Date 2024-09-20 16:25:31
     * @Author WangKun
     **/
    public static DataSource getDataSource() {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setDriverClassName(DRIVER);
        hikariConfig.setJdbcUrl(URL);
        hikariConfig.setUsername(USER_NAME);
        hikariConfig.setPassword(PASSWORD);
        // 设置可以获取tables remarks信息
        hikariConfig.addDataSourceProperty("useInformationSchema", "true");
        hikariConfig.setMinimumIdle(2);
        hikariConfig.setMaximumPoolSize(5);
        return new HikariDataSource(hikariConfig);
    }
}

效果:


http://www.kler.cn/news/312217.html

相关文章:

  • 深入Redis:核心的缓存
  • 【计算机网络 - 基础问题】每日 3 题(十四)
  • 百易云资产系统 house.save.php SQL注入
  • tomcat知识
  • 【Android】ViewPager
  • 生信初学者教程(三):介绍
  • [Linux] 进程优先级 进程的调度与切换 环境变量详解
  • qt--Qml控件库如何从外部导入
  • 虾皮选品技巧有哪些?超全Shopee选品的方法和技巧分享!
  • C#无标题栏窗体拖动
  • 物联网开发+充电桩管理系统+充电桩系统源码
  • 【北京迅为】《STM32MP157开发板使用手册》- 第四十二章 事件实验
  • Java设计模式—面向对象设计原则(四) ----->接口隔离原则(ISP) (完整详解,附有代码+案例)
  • 基于JavaWeb开发的java+Springboot操作系统教学交流平台详细设计实现
  • 探索AI大模型的未来:电信运营商与云服务商的新征途@附58页PDF文件下载
  • liunx 计划任务
  • VRRP协议原理
  • 《计算机网络名词解释》
  • 【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘
  • 量化交易软件、接口、API、区别、用法,有什么好用的么
  • Vue2中路由的介绍和使用
  • UDS诊断-面试题2
  • 掌握Protobuf精髓:深入解析.proto文件语法及高效应用
  • 蓝桥杯4. Fizz Buzz 经典问题
  • sql基础语法及常见函数等
  • 解决:The play() request was interrupted by a call to pause().报错
  • Android Glide:让图片加载从未如此简单
  • 14_input子系统my_touch_device,my_touch_handlerLinux内核模块
  • Android 将EasyPermissions进一步封装,使得动态权限申请更加简明
  • Java 23、JDK 23正式发布!