Java代码一键生成数据库文档(案例详解)

简介: Screw是一个自动化数据库文档生成工具,能根据数据库表结构快速生成简洁、多格式(HTML、Word、Markdown)的文档,支持MySQL、MariaDB等多数据库。它使用Freemarker模板,允许用户自定义样式。依赖包括HikariCP数据库连接池和对应JDBC驱动。通过在Java代码或Maven插件中配置,可方便生成文档。示例代码展示了如何在测试用例中使用Screw。文档效果依赖于数据库中的表和字段注释。

数据库文档是我们在企业项目开发中需要交付的文档,通常需要开发人员去手工编写。编写完成后,数据库发生变更又需要手动的进行修改,从而浪费了大量的人力。并且这种文档并没有什么技术含量,被安排做这个工作的程序员往往自己心里会有抵触情绪,悲观的预期自己在团队的位置,造成离职也是可能的。如下面的这种文档的内容:

笔者最近在github上面发现一个数据库文档生成工具:screw(螺丝钉)。该工具能够通过简单地配置,快速的根据数据库表结构进行逆向工程,将数据库表结构及字段逆向生成为文档。

二、特点

   简洁、轻量、设计良好

   多数据库支持:MySQL、MariaDB、TIDB、Oracle、 SqlServer、PostgreSQL、Cache DB

   多种格式文档: html、word、 markdwon

   灵活扩展:支持用户自定义模板和展示样式修改(freemarker模板)

三、依赖库探究

mvn中央仓库查看最新版本,将如下的maven坐标引入到Spring Boot项目中去:

<code class="language-plaintext hljs"><dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.3</version></dependency></code>

从maven仓库的编译依赖中可以看到,screw-core其实现依赖了如下的内容。重点关注freemarker,因为该项目是使用freemarker作为模板生成文档。

除此之外,screw使用了HikariCP作为数据库连接池,所以:

   你的Spring Boot项目需要引入HikariCP数据库连接池。

   根据你的数据库类型及版本,引入正确的JDBC驱动

四、开始造作吧

以上的工作都做好之后,我们就可以来配置文档生成参数了。实现文档生成有两种方式,一种是写代码,一种是使用maven 插件。

   我个人还是比较喜欢使用代码的当时,写一个单元测试用例就可以了,相对独立,使用方式也灵活。

   如果放在pom.xml的插件配置里面,让本就很冗长的pom.xml变的更加的冗长,不喜欢。

所以maven插件的这种方式我就不给大家演示了,直接把下面的代码Ctrl + C/V到你的src/test/java目录下。简单的修改配置,运行就可以了

<code class="language-plaintext hljs">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 org.junit.jupiter.api.Test;

import javax.sql.DataSource;

import java.util.ArrayList;

public class ScrewTest{

 

 @Test

 void testScrew(){//数据源

   HikariConfig hikariConfig =newHikariConfig();

   hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");

   hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");

   hikariConfig.setUsername("db-username");

   hikariConfig.setPassword("db-password");//设置可以获取tables remarks信息

   hikariConfig.addDataSourceProperty("useInformationSchema","true");

   hikariConfig.setMinimumIdle(2);

   hikariConfig.setMaximumPoolSize(5);

   DataSource dataSource =newHikariDataSource(hikariConfig);//生成配置

   EngineConfig engineConfig = EngineConfig.builder()//生成文件路径.fileOutputDir("d://")//打开目录.openOutputDir(true)//生成文件类型:HTML.fileType(EngineFileType.HTML)//生成模板实现.produceType(EngineTemplateType.freemarker).build();//忽略表

   ArrayList<String> ignoreTableName =newArrayList<>();

   ignoreTableName.add("test_user");

   ignoreTableName.add("test_group");//忽略表前缀

   ArrayList<String> ignorePrefix =newArrayList<>();

   ignorePrefix.add("test_");//忽略表后缀

   ArrayList<String> ignoreSuffix =newArrayList<>();

   ignoreSuffix.add("_test");

   ProcessConfig processConfig = ProcessConfig.builder()//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置//根据名称指定表生成.designatedTableName(newArrayList<>())//根据表前缀生成.designatedTablePrefix(newArrayList<>())//根据表后缀生成.designatedTableSuffix(newArrayList<>())//忽略表名.ignoreTableName(ignoreTableName)//忽略表前缀.ignoreTablePrefix(ignorePrefix)//忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();//配置

   Configuration config = Configuration.builder()//版本.version("1.0.0")//描述,文档名称.description("数据库设计文档生成")//数据源.dataSource(dataSource)//生成配置.engineConfig(engineConfig)//生成配置.produceConfig(processConfig).build();//执行生成newDocumentationExecute(config).execute();}}</code>

在测试用例里面运行上面的代码,就会自动生成数据库文档到fileOutputDir配置目录下。

五、效果

在数据库中为每张数据表添加comment,才会有表说明字段。

在数据库中为字段添加comment,才会有字段说明。


相关文章
|
12天前
|
前端开发 Java
java实现队列数据结构代码详解
本文详细解析了Java中队列数据结构的实现,包括队列的基本概念、应用场景及代码实现。队列是一种遵循“先进先出”原则的线性结构,支持在队尾插入和队头删除操作。文章介绍了顺序队列与链式队列,并重点分析了循环队列的实现方式以解决溢出问题。通过具体代码示例(如`enqueue`入队和`dequeue`出队),展示了队列的操作逻辑,帮助读者深入理解其工作机制。
|
16天前
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
13天前
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
176 93
|
10天前
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
55 12
|
4天前
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
28 4
|
8天前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
18天前
|
NoSQL MongoDB 数据库
数据库数据恢复——MongoDB数据库服务无法启动的数据恢复案例
MongoDB数据库数据恢复环境: 一台Windows Server操作系统虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 管理员在未关闭MongoDB服务的情况下拷贝数据库文件。将MongoDB数据库文件拷贝到其他分区后,对MongoDB数据库所在原分区进行了格式化操作。格式化完成后将数据库文件拷回原分区,并重新启动MongoDB服务。发现服务无法启动并报错。
|
1月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
1月前
|
消息中间件 Java 应用服务中间件
JVM实战—1.Java代码的运行原理
本文介绍了Java代码的运行机制、JVM类加载机制、JVM内存区域及其作用、垃圾回收机制,并汇总了一些常见问题。
JVM实战—1.Java代码的运行原理
|
1月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
110 17

热门文章

最新文章

下一篇
oss创建bucket