SpringBoot 数据库表结构文档生成

server/2024/11/15 2:08:19/

官方地址: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/server/119811.html

相关文章

YOLOv8目标检测——迁移学习

迁移学习方法 &#xff08;1&#xff09;预训练模型与训练模型的构建 实现思路 使用yolov8x.yaml的模型配置作为教师模型&#xff0c;学生模型采用yolov8n.yaml。先使用较大的教师模型在数据集上面进行训练&#xff0c;之后再用学生模型的网络将教师模型训练成为学生模型。 …

低代码开发:助力制造业数字化高质量发展

随着信息技术的飞速发展&#xff0c;制造业正经历着前所未有的数字化转型。在这个过程中&#xff0c;低代码开发作为一种新兴的软件开发方式&#xff0c;正逐渐成为推动制造业数字化高质量发展的重要力量。本文将探讨低代码开发如何助力制造业实现数字化转型&#xff0c;并提高…

Redis详细解析

Redis 什么是Redis?关系型与非关系型数据库Redis可以做什么Redis入门安装在Windows系统上安装在Linux系统上安装 Redis在Linux系统上启动运行如何设置redis-server后台运行与关闭如何设置redis客户端登录时需要验证密码**设置允许远程连接redis服务**Redis数据类型Redis常用命…

Linux入门2

文章目录 一、Linux基本命令1.1 文件的创建和查看命令1.2 文件的复制移动删除等命令1.3 查找命令1.4 文件的筛选和管道的使用1.5 echo、tail和重定向符 二、via编辑器三、权限控制3.1 root用户&#xff08;超级管理员&#xff09;3.2 用户和用户组3.3 权限信息3.4 chmod命令 一…

Pool 和 PG 架构(二)

Ceph 的存储架构设计旨在提供高可用性和可扩展性。其中&#xff0c;Pool&#xff08;存储池&#xff09;和 PG&#xff08;放置组&#xff09;是两个核心概念。下面详细介绍 Ceph 的 Pool 和 PG 架构以及它们之间的关系。 1. Pool池 概念&#xff1a; Pool&#xff08;存储池…

setImmediate() vs setTimeout() 在 JavaScript 中的区别

setImmediate() vs setTimeout() 在 JavaScript 中的区别 在 JavaScript 中&#xff0c;setImmediate() 和 setTimeout() 都用于调度任务&#xff0c;但它们的工作方式不同。 JavaScript 的异步特性 JavaScript 以其非阻塞、异步行为而闻名&#xff0c;尤其是在 Node.js 环境…

领域驱动DDD三种架构-分层架构、洋葱架构、六边形架构

博主介绍&#xff1a; 大家好&#xff0c;我是Yuperman&#xff0c;互联网宇宙厂经验&#xff0c;17年医疗健康行业的码拉松奔跑者&#xff0c;曾担任技术专家、架构师、研发总监负责和主导多个应用架构。 技术范围&#xff1a; 目前专注java体系&#xff0c;以及golang、.Net、…

Idea开发Gradle多模块项目踩坑纪实之一:Java模块无法执行

最近尝试了使用Idea尝试使用Gradle开发多模块项目&#xff0c;结果遇到一个见鬼的问题&#xff1a; 首先&#xff0c;总项目是一个空项目。 第二&#xff0c;我首先建立了两个Java模块&#xff0c;然后建立了一个Spring boot程序模块。 当我建立第四个Java模块的时候发现问题…