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

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


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.mzph.cn/news/879906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Kubernetes】常见面试题汇总(二十九)

目录 81.简述你知道的几种 CNI 网络插件&#xff0c;并详述其工作原理。K8s 常用的CNI网络插件&#xff08;calico && flannel&#xff09;&#xff0c;简述一下它们的工作原理和区别。 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff…

c语言面试字符串复制

1&#xff0c;下面这个函数的打印是什么&#xff1a; #include<stdio.h> #include<string.h>int main() {char str0[5], str1[] "welcome";strcpy(str0, str1);printf("str0:%s\r\n",str0);printf("str1:%s\r\n",str1); } larkla…

nginx实现https安全访问的详细配置过程

文章目录 前言什么是 HTTP&#xff1f;什么是 HTTPS&#xff1f;HTTP 和 HTTPS 的区别为什么 HTTPS 被称为安全的&#xff1f;配置过程配置自签名证书 前言 首先我们来简单了解一下什么是http和https以及他们的区别所在. 什么是 HTTP&#xff1f; HTTP&#xff0c;全称为“超…

Apache Iceberg 试用

启动 spark-sql 因为 iceberg 相关的 jars 已经在 ${SPARK_HOME}/jars 目录&#xff0c;所以不用 --jars 或者 --package 参数。 spark-sql --master local[1] \--conf spark.sql.extensionsorg.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \--conf spar…

notepad++的json查看

json文件查看 因为接触到3dtile模型&#xff0c;所以经常需要和json打交道&#xff0c;但是很多模型是下面这种情况&#xff0c;不好阅读&#xff0c;所以可以使用notepad的插件查看 正常打开是这样的 加载notepad插件 搜索json下载安装就可以了 如果网络抽象&#xff0c;下载…

Hive企业级调优[3]—— Explain 查看执行计划

Explain 查看执行计划 Explain 执行计划概述 EXPLAIN 命令呈现的执行计划由一系列 Stage 组成。这些 Stage 之间存在依赖关系&#xff0c;每一个 Stage 可能对应一个 MapReduce Job 或者一个文件系统的操作等。如果某 Stage 对应了一个 MapReduce Job&#xff0c;则该 Job 在 …

Apache James配置连接达梦数据库

项目场景&#xff1a; Apache James配置连接达梦数据库&#xff0c;其他配置中不存在的数据库也可参考此方案。 配置步骤 1、把需要的jar包导入到James 把DmJdbcDriver18.jar复制到下面lib目录下 james-2.3.2\lib 2、 修改连接配置 james-2.3.2\apps\james\SAR-INF\confi…

oracle表的类型

表是数据库最基本的逻辑结构&#xff0c;一切数据都存放在表中&#xff0c;其它数据库对象(索引、视图、同义词等)都是为了更方便的操作表中的数据。Oracle数据库是由若干个表组成&#xff0c;每个表由列和行组成。 数据库表的类型按照存储结构划分&#xff1a; (1)普通表&…

SpringBoot开发——获取HTTP请求头(Header)的三种方法

文章目录 方法一&#xff1a;使用HttpServletRequest实现原理方法二&#xff1a;使用RequestContextHolder实现原理方法三&#xff1a;使用RequestHeader注解实现原理总结 在Spring Boot应用中&#xff0c;获取HTTP请求头&#xff08;Header&#xff09;信息是常见的需求&#…

C# 技巧在 foreach 循环中巧妙获取索引

目录 前言 使用 LINQ 和扩展方法 直接在 LINQ 查询中使用 使用 LINQ 的 Select() 与 Enumerable.Range() 总结 最后 前言 在C#中foreach 循环是处理集合的常见方式&#xff0c;因其简洁性和易读性而广受青睐。 但是在某些情况下&#xff0c;我们需要同时获取集合中元素的…

Unity—Transform类-position

概要 游戏对象&#xff08;GameObject&#xff09;位移、旋转、缩放、父子关系、坐标转换等相关操作都由它处理 是Unity提供的极其重要的类 Vector3 Vector3主要是用来表示三维坐标系中的 一个点 或者一个向量 申明 Vector3 v new Vector3(); v.x …

如何限制任何爬虫爬取网站的图片

随着网络爬虫技术的普及&#xff0c;网站的图片、内容和数据容易被恶意爬取。这不仅可能导致带宽资源的浪费&#xff0c;还会侵犯图片版权和私密性。因此&#xff0c;许多网站管理员希望限制或阻止爬虫爬取网站的图片。本文将介绍一些有效的技术和方法&#xff0c;帮助网站管理…

[深度学习]神经网络

1 人工神经网络 全连接神经网络 2 激活函数 隐藏层激活函数由人决定输出层激活函数由解决的任务决定: 二分类:sigmoid多分类:softmax回归:不加激活(恒等激活identify)2.1 sigmoid激活函数 x为加权和小于-6或者大于6,梯度接近于0,会出现梯度消失的问题即使取值 [-6,6] ,…

头戴式蓝牙耳机性价比高的有哪些?四款高能性价比机型对比推荐

在当今科技日新月异的时代&#xff0c;头戴式蓝牙耳机已经成为了我们日常生活中不可或缺的一部分&#xff0c;无论是通勤路上、健身房内还是家中休闲时&#xff0c;一副优质的头戴式蓝牙耳机都能为我们带来沉浸式的听觉体验&#xff0c;那么头戴式蓝牙耳机性价比高的有哪些&…

练习题 - Django 4.x Models CRUD(增、删、改、查)函数方法

在 web 应用程序开发中,数据的增、删、改、查(CRUD)操作是最基本的功能之一。Django 作为一个高效的 web 框架,提供了强大的 ORM(对象关系映射)功能,使得开发者可以通过 Python 代码直接操作数据库,而不需要编写繁琐的 SQL 语句。这种简化和抽象帮助开发者快速构建、测…

模版结构体没有可用成员(C3203)

没有typedef模版结构体而导致。 并且_tables[index]无法访问HashData内部的成员。

Windows系统使用PHPStudy搭建Cloudreve私有云盘公网环境远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

Vue(13)——router-link

router-link vue-router提供了一个全局组件router-link(取代a标签) 能跳转&#xff0c;配置to属性指定路径&#xff08;必须&#xff09;。本质还是a标签。默认会提供高亮类名&#xff0c;可以直接设置高亮样式 右键检查&#xff0c;发现多了两个类&#xff1a; 可以直接写样式…

【Python】探索 Errbot:多功能聊天机器人框架

不是旅行治愈了你&#xff0c;是你在路上放过了自己。 在当今的数字化时代&#xff0c;聊天机器人已成为企业与客户互动、提升工作效率和增加乐趣的重要工具。Errbot是一个高度可扩展的聊天机器人框架&#xff0c;它允许开发者使用Python轻松创建和定制机器人。本文将介绍Errb…

大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元

Sysdig 威胁研究团队 (TRT) 报告称&#xff0c;LLMjacking&#xff08;大型语言模型劫持&#xff09;事件急剧增加&#xff0c;攻击者通过窃取的云凭证非法访问大型语言模型 (LLM)。 这一趋势反映了 LLM 访问黑市的不断增长&#xff0c;攻击者的动机包括个人使用和规避禁令和制…