SpringBoot 数据库表结构文档生成

devtools/2024/11/11 5:04:31/

官方地址: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,怎么方便怎么弄

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

java">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 = "数据库";// URLpublic 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;}

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

java">
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.ppmy.cn/devtools/114885.html

相关文章

QTCreator 调试:unknown debugger type “No engine“

QTCreator 调试&#xff1a;unknown debugger type "No engine" - kaizenly - 博客园 (cnblogs.com) 一开始Debuggers---Auto-detected这里第一row第一个项是标红的&#xff0c;然后没改东西&#xff0c;点完应用Apply以后&#xff0c;就可以调试了...&#xff08;不…

VCNet论文阅读笔记

VCNet论文阅读笔记 0、基本信息 信息细节英文题目VCNet and Functional Targeted Regularization For Learning Causal Effects of Continuous Treatments翻译VCNet和功能目标正则化用于学习连续处理的因果效应单位芝加哥大学年份2021论文链接[2103.07861] VCNet和功能定向正…

自定义类型:联合和枚举

一 &#xff0c;联合体类型的声明 与结构体相似&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成员可以是不同类型。 但是与结构体不同的是 &#xff1a; 编译器只为联合体成员中的最大成员分配足够的内存空间。 联合体的特点是所有成员共用一块内存空间。所以…

mysql5.7.44安装教程

mysql5.7.44安装教程 1.windows 二进制压缩包从MySQL官网下载即可。 2.解压后&#xff0c;在根目录下创建my.ini文件 [mysql] # 设置 mysql 客户端默认字符集 default-character-setutf8 [mysqld] #设置 3306 端口 port 3306 # 设置 mysql 的安装目录 basedir …

VMware安装rustdesk服务器

一、准备 首先准备服务器镜像&#xff1a;22.04 虚拟机硬件配置选1G RAM 20G ROM就行 二、虚拟机安装过程 安装过程中选最小体积安装&#xff0c;并勾选安装SSH 安装完成后在SSH工具中连接&#xff08;步骤可视实际情况跳过&#xff09;&#xff1a; //需要先连接外网 1.安…

list(二) (list模拟实现)

首先进行大框架 先写基本的结点类 有data next prev template<class T>class ListNode//或者使用struct 就不用在写public声明公有{public://这里不仅仅是成员函数 成员变量也要公有化 ListNode<T>* _next;ListNode<T>* _prev;T _data;}之后是链表list类…

【实践】应用访问Redis突然超时怎么处理?

目录标题 问题描述分析过程查看监控数据系统监控指标JVM监控指标Redis监控指标分析应用异常单机异常规律集群异常规律统计超时的key 初步结论验证结论访问Redis链路slowlogRedis单节点info all定位redis节点定位异常keybigkeystcpdump定位大key影响 经验总结 问题描述 某产品线…

【论文笔记】Are Large Kernels Better Teacheres than Transformers for ConvNets

Abstract 本文提出蒸馏中小核ConvNet做学生时&#xff0c;与Transformer相比&#xff0c;大核ConvNet因其高效的卷积操作和紧凑的权重共享&#xff0c;使得其做教师效果更好&#xff0c;更适合资源受限的应用。 用蒸馏从Transformers蒸到小核ConvNet的效果并不好&#xff0c;原…