Java 自动生成数据库设计文档

背景:有时候急需要数据库设计文档,手写太麻烦,这里介绍一款开源组件,可以自动根据数据库连接生成数据库设计文档

废话不多说,直接上代码

导入maven包

<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.30</version></dependency><dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><scope>test</scope></dependency>

相关代码


import cn.smallbun.screw.core.Configuration;
import cn.smallbun.screw.core.engine.EngineConfig;
import cn.smallbun.screw.core.engine.EngineFileType;
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 lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class ScrewApplicationTests {@AutowiredApplicationContext applicationContext;@Testpublic void contextLoads() {//数据源HikariConfig hikariConfig = new HikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://xxx.xxx.x.xx:3306/sei-file?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8");hikariConfig.setUsername("root");hikariConfig.setPassword("xxx");//设置可以获取tables remarks信息hikariConfig.addDataSourceProperty("useInformationSchema", "true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSource dataSource = new HikariDataSource(hikariConfig);// 生成文件配置EngineConfig engineConfig = EngineConfig.builder()// 生成文件路径,自己mac本地的地址,这里需要自己更换下路径.fileOutputDir("D:/Screw")// 打开目录.openOutputDir(false)// 文件类型.fileType(EngineFileType.WORD)// 生成模板实现.produceType(EngineTemplateType.freemarker).build();// 生成文档配置(包含以下自定义版本号、描述等配置连接)Configuration config = Configuration.builder().version("1.0.0").description("xxx数据库表结构设计文档").dataSource(dataSource).engineConfig(engineConfig).produceConfig(getProcessConfig()).build();// 执行生成new DocumentationExecute(config).execute();}/*** 配置想要生成的表+ 配置想要忽略的表* @return 生成表配置*/public static ProcessConfig getProcessConfig(){// 忽略表名List<String> ignoreTableName = Arrays.asList("region","test_group");// 忽略表前缀,如忽略a开头的数据库表List<String> ignorePrefix = Arrays.asList("gen");// 忽略表后缀List<String> ignoreSuffix = Arrays.asList("copy","copy1","copy2","copy3","copy4","copy5","copy6","copy7","copy8","copy9");return ProcessConfig.builder()//根据名称指定表生成.designatedTableName(new ArrayList<>())//根据表前缀生成.designatedTablePrefix(new ArrayList<>())//根据表后缀生成.designatedTableSuffix(new ArrayList<>())//忽略表名.ignoreTableName(ignoreTableName)//忽略表前缀.ignoreTablePrefix(ignorePrefix)//忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();}

最终生成效果:

相关参考:

screw: 简洁好用的数据库表结构文档工具,支持MySQL/MariaDB/SqlServer/Oracle/PostgreSQL/TIDB/CacheDB 数据库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707113.html

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

相关文章

openGauss一主两备集群异常断电后不能正常启动的解决过程简记

背景 因异常断电后opengauss 5.0.0版本&#xff0c;一主两备集群启动失败。 报错不是主机&#xff0c;由于当时没有截图&#xff0c;查看日志后发现报错是&#xff1a; 定位过程 Day1 1. 尝试用另外两台机器启动每台机器 发现都报错自己不是主机&#xff0c;像极了唐僧被妖…

计算机网络-路由策略与路由控制一

到目前为止我们学习了路由与交换基础&#xff0c;路由协议有静态、RIP、OSPF、IS-IS等&#xff0c;但是根据实际组网需求&#xff0c;往往需要实施一些路由策略对路由信息进行过滤、属性设置等操作&#xff0c;通过对路由的控制&#xff0c;可以影响数据流量转发。 因此我们开始…

webpack优化构建速度示例-IgnorePlugin:

IgnorePlugin是webpack的一个内置插件&#xff0c;允许你忽略某些特定的模块或文件 webpack.config.jsconst config {entry: ./src/index.js,output: {filename: main.js},mode: development, }module.exports config;src/index.js import moment from moment console.log(mo…

高中数学:平面向量-数乘运算

一、定义 顾名思义 向量的数乘运算&#xff0c;就是数量与向量相乘的运算 λ a → \mathop{a}\limits ^{\rightarrow} a→&#xff0c;λ∈R 二、λ a → \mathop{a}\limits ^{\rightarrow} a→的性质 1、长度 |λ|*| a → \mathop{a}\limits ^{\rightarrow} a→| |λ a …

如何管理研发人员

在日益激烈的市场竞争中&#xff0c;企业的核心竞争力往往取决于其技术创新能力和研发实力。然而&#xff0c;随着企业研发的深入和技术的积累&#xff0c;研发人员泄密的风险也愈发严重。如何防止研发人员泄密&#xff0c;已经成为企业面临的重要问题。本文将从加强员工保密意…

你好 GPT-4o!

你好 GPT-4o&#xff01; OpenAI公司宣布推出 GPT-4o&#xff0c;这是OpenAI的新旗舰模型&#xff0c;可以实时对音频、视觉和文本进行推理。 GPT-4o&#xff08;“o”代表“o​​mni”&#xff09;是迈向更自然的人机交互的一步——它接受文本、音频、图像和视频的任意组合作…

2020 年第一届辽宁省大学生程序设计竞赛

比赛经历&#xff1a;摸鱼划水了一个多小时又是只会签到&#xff0c;看来还得提升自己的解题能力写了六题 补题&#xff1a;E线段树维和区间平方和&#xff0c;比较经典好久没写过线段树了傻了&#xff0c;注意维护lazy J计算几何&#xff0c;看来得提上日程了&#xff0c;用叉…

Ipython 解释器之魔法命令

文章目录 1. 性能分析 %timeit 和 %prun2. 交互式绘图 %matplotlib inline3. 查看和修改环境变量 %env4. 读取并执行外部脚本 %run5. 调试 %debug6. 代码 profiling with %lprun7. 记忆函数结果 %memit 和 %mprun8. 交互式Shell与系统命令 %shell9. 自动补全与文档查看 %autoin…

【面试干货】一个数组的倒序

【面试干货】一个数组的倒序 1、实现思想2、代码实现 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、实现思想 创建一个新的数组&#xff0c;然后将原数组的元素按相反的顺序复制到新数组中。 2、代码实现 package csdn;public class…

CentOS7使用Docker安装Redis图文教程

1.拉取Redis镜像 这里制定了版本&#xff0c;不指定默认latest最新版 docker pull redis:6.0.8提示信息如下即为下载成功 2.上传配置文件 官方配置文件&#xff08;找自己对应的版本&#xff09;&#xff1a;reids.conf 或者将如下配置文件命名为redis.conf&#xff0c;上…

副业新选择:10大程序员热门接单平台,兼职赚钱两不误!

很多程序员都想过通过副业赚取收入&#xff0c;但往往会停在接单的第一步&#xff1a;要么是因为懒拖延迟迟没有行动&#xff0c;要么因为没有选对适合自己的平台迟迟没有开张。程序员想要通过副业赚取收入&#xff0c;一定要看好这10个程序员接单平台&#xff0c;保你主业副业…