java快速生成数据库文档详情
作者:小码农叔叔 发布时间:2023-11-10 05:25:20
标签:java,生成,数据库,文档
前言
在产品发布前夕,经常因为编写各类设计文档感到心碎,倒不是难,而是比较繁琐,举例来说,像编写数据库文档这种操作来说,对于新手,甚至很多有一定开发经验的同学来说,都觉得是一件费力得事情,下面推荐一个小组件,并提供一段程序,帮助有需要得同学快速生成数据库文档,已解决这个麻烦得小事
环境准备
一个开发数据库,以下截取了部分表,实际中可能远不止这些
1、导入pom依赖
<!-- screw核心 -->
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.3</version>
</dependency>
<!-- HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<!--mysql driver-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
2、数据库连接工具类
public class JdbcUtils {
public static String DRIVER_NAME = "com.mysql.jdbc.Driver";
public static String JDBC_URL = "jdbc:mysql://IP:3306/tenant";
public static String USER_NAME = "zhangcy";
public static String PASSWORD = "zhangcy";
public static DataSource getDataSourceFonfig() {
//数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName(DRIVER_NAME);
hikariConfig.setJdbcUrl(JDBC_URL);
hikariConfig.setUsername(USER_NAME);
hikariConfig.setPassword(PASSWORD);
//设置可以获取tables remarks信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
return new HikariDataSource(hikariConfig);
}
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(DRIVER_NAME).newInstance();
conn = java.sql.DriverManager.getConnection(JDBC_URL, USER_NAME, PASSWORD);
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取某个数据库下的所有表
*
* @return
*/
public static List<String> getTablesNames() {
List<String> tables = new ArrayList<>();
Connection connection = getConnection();
ResultSet rs = null;
Statement st = null;
try {
st = connection.createStatement();
rs = st.executeQuery("show tables");
while (rs.next()) {
String string = rs.getString(1);
tables.add(string);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
st.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return tables;
}
}
3、生成数据库文档核心方法
public class GenerateDoc {
/**
* 生成的文档本地路径
*/
public static final String LOCAL_PATH= "D:\\soft\\table";
public static void main(String[] args) {
DataSource dataSource = JdbcUtils.getDataSourceFonfig();
EngineConfig engineConfig = EngineConfig.builder()
//导出文件地址
.fileOutputDir(LOCAL_PATH)
//是否打开文件夹
.openOutputDir(true)
//文件类型:html、doc、mockdown
.fileType(EngineFileType.WORD)
//模板引擎
.produceType(EngineTemplateType.freemarker).build();
ProcessConfig processConfig = ProcessConfig.builder()
//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
//根据名称指定表生成
.designatedTableName(JdbcUtils.getTablesNames())
//根据表前缀生成
.designatedTablePrefix(new ArrayList<>())
//根据表后缀生成
.designatedTableSuffix(new ArrayList<>()).build();
//设置生成pojo相关配置
Configuration config = Configuration.builder()
.version("1.0.0")
.description("数据库设计文档")
.dataSource(dataSource)
.engineConfig(engineConfig)
.produceConfig(processConfig).build();
new DocumentationExecute(config).execute();
}
}
本段方法中有大量得注释,解释如何生成数据库文档的步骤,以及各个配置参数的作用,拿到程序之后,只需运行main方法即可,注意,可以根据自己的需要,选择生成那种展示形式的文档,比如是本地的doc,或者markdown,或html都是可选的
本段以doc为例,运行main方法,观察结果:
打开数据库文档,基本来说,我们只需简单调整下整体的格式即可使用了
不妨再换一下,生成HTML格式的文件看看,修改下程序中的参数
观察结果:
通过这种方式,可以让大家在编写数据库文档时候节省不少体力吧
来源:https://blog.csdn.net/zhangcongyi420/article/details/115415617


猜你喜欢
- 在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求。由于这种限制不方便,所以出现了ArrayList。ArrayList、Lis
- SearchView是搜索框组件,它可以让用户在文本框里输入文字,通过 * 取得用户的输入,当用户点击搜索时, * 执行实际的搜索。本文就为
- Java 存储模型和共享对象详解很多程序员对一个共享变量初始化要注意可见性和安全发布(安全地构建一个对象,并其他线程能正确访问)等问题不是很
- 简介使用 SpringBoot 配置 FTP 服务器,上传、删除、下载文件。配置 FTP检查是否安装 vsftpdrpm -qa | gre
- 前言 安卓系统中,Button是程序和用户进行交互的一个重要控件,今天我们就来简单的对Button进行学习,其中Bu
- 本文为大家分享了C#利用VS中插件打包并发布winfrom程序,供大家参考,具体内容如下1.先在VS 的扩展更新中搜索此插件【2015 in
- 在Android开发中在所难免的会出现程序crash,俗称崩溃。用户的随意性访问出现测试时未知的Bug导致我们的程序crash,此时我们是无
- 本文实例讲述了C#实现winform中RichTextBox在指定光标位置插入图片的方法。分享给大家供大家参考,具体如下://获取RichT
- Java公众号【Java技术迷】一个在互联网领先地位,微信搜索【Java技术迷】第一时间阅读最新文章,通过下面下载链接,即可获得我精心整理的
- 一、背景有些业务场景下需要将 Java Bean 转成 Map 再使用。以为很简单场景,但是坑很多。二、那些坑2.0 测试对象import
- 本文实例为大家分享了java实现猜拳小游戏的具体代码,供大家参考,具体内容如下实现下图要求public class User {privat
- JAVA并发编程有界缓存的实现1、有界缓存的基类package cn.xf.cp.ch14;/** * *功能:有界缓存实现基类 *时间:
- 本文实例讲述了Java编程调用微信分享功能。分享给大家供大家参考,具体如下:这篇文章介绍如何使用java开发微信分享功能,因为工作,已经开发
- Spring Boot 自动装配最重要的注解@SpringBootApplication@Target(ElementType.TYPE)@
- 一、算法原理插入排序法:所谓插入排序法乃是将一个数目插入该占据的位置。假设我们输入的是 “53,27,36,15,69, 42”
- java自定义切面增强写代码时会遇到一些有些重复机械的工作, 这个时候就可以运用切面技术来帮我们节约时间介绍如何使用自定义注解增强方法, 实
- 本文实例为大家分享了Android自定义带圆点的半圆形进度条,供大家参考,具体内容如下仅限用于半圆形,如须要带圆点的圆形进度条,圆点会出现错
- 一:引入依赖包<!-- https://mvnrepository.com/artifact/org.springframework.
- 今天PM提了个需求:用户退出当前网页时,只清除该网页访问的域名相关的cookie,保留其他域名的cookie。查了一下CookieManag
- 目录1、概念相关1.1、概念1.2、解决了什么:1.3、场景:2、简单实现2.1 代码3. netty中的责任链模式4、思考本文先介绍了责任