【Java】Mysql文档生成工具
资料参考:
https://blog.csdn.net/weixin_43797561/article/details/122809269
https://blog.csdn.net/qq_33177268/article/details/124325242
新建Maven工程:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>cn.cloud9</groupId>
<artifactId>MySQL-Document</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<!--文档生成工具 -->
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.5</version>
</dependency> <!--数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.25</version>
</dependency> <!--数据库连接池 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.5.1</version>
</dependency> <!-- ini 配置读取 -->
<dependency>
<groupId>org.ini4j</groupId>
<artifactId>ini4j</artifactId>
<version>0.5.4</version>
</dependency> <!--————————————————-->
<!--版权声明:本文为CSDN博主「风华正茂_Yang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。-->
<!--原文链接:https://blog.csdn.net/weixin_43797561/article/details/122809269-->
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>Application</mainClass>
<!-- 主类的位置,例如上图文件,主类配置应为: -->
<!-- <mainClass>top.nihilwater.App</mainClass> -->
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build> </project>
启动类编写:
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.ini4j.Profile;
import org.ini4j.Wini; import javax.sql.DataSource;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors; /**
* @projectName: MySQLDocument
* @author: Cloud9
* @date: 2022年05月26日 16:23
* @version: 1.0
*/
public class Application { private static Wini configFile; static {
try {
configFile = new Wini(new File("config.ini"));
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 数据源初始化
* @param
* @return javax.sql.DataSource
* @author Cloud9
* @createTime 2022/5/26 17:26
*
*/
private static DataSource initDataSource() {
try {
Profile.Section section = configFile.get("mysql-config");
//数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName(section.get("driverClassname"));
hikariConfig.setJdbcUrl(section.get("jdbcUrl"));
hikariConfig.setUsername(section.get("username"));
hikariConfig.setPassword(section.get("password"));
//设置可以获取tables remarks信息
final String TABLE_REMARK = "useInformationSchema";
hikariConfig.addDataSourceProperty(TABLE_REMARK, section.get(TABLE_REMARK, "true"));
hikariConfig.setMinimumIdle(Integer.parseInt(section.get("min-idle", "2")));
hikariConfig.setMaximumPoolSize(Integer.parseInt(section.get("max-pool-size", "10")));
return new HikariDataSource(hikariConfig);
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 模板引擎初始化
* @return cn.smallbun.screw.core.engine.EngineConfig
* @author Cloud9
* @createTime 2022/5/26 17:31
*/
private static EngineConfig initEngineConfig() {
Profile.Section section = configFile.get("template-engine-config"); //生成配置
return EngineConfig.builder()
//生成文件路径
.fileOutputDir(section.get("output-dir", ".\\"))
//打开目录
.openOutputDir(true)
//文件类型
.fileType(EngineFileType.HTML)
//生成模板实现
.produceType(EngineTemplateType.freemarker)
//自定义文件名称
.fileName(section.get("file-name", "测试案例"))
.build();
} /**
* 处理配置初始化
* @return cn.smallbun.screw.core.engine.EngineConfig
* @author Cloud9
* @createTime 2022/5/26 17:31
*/
private static ProcessConfig initProcessConfig() {
Profile.Section section = configFile.get("ignore-config");
Profile.Section designateSection = configFile.get("designate-config"); if (null == section && null == designateSection) return ProcessConfig.builder().build(); return ProcessConfig.builder()
//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
//根据名称指定表生成
.designatedTableName(getMultiParam(designateSection.get("table")))
//根据表前缀生成
.designatedTablePrefix(getMultiParam(designateSection.get("prefix")))
//根据表后缀生成
.designatedTableSuffix(getMultiParam(designateSection.get("suffix")))
//忽略表名
.ignoreTableName(getMultiParam(section.get("table")))
//忽略表前缀
.ignoreTablePrefix(getMultiParam(section.get("prefix")))
//忽略表后缀
.ignoreTableSuffix(getMultiParam(section.get("suffix")))
.build();
} /**
* 获取一组参数
* @return cn.smallbun.screw.core.engine.EngineConfig
* @author Cloud9
* @createTime 2022/5/26 17:31
*/
private static List<String> getMultiParam(String paramItem) {
return null == paramItem ? new ArrayList<>() :
Arrays.stream(paramItem.split(","))
.map(String::trim)
.collect(Collectors.toList());
} /**
* 全部配置初始化
* @return cn.smallbun.screw.core.engine.EngineConfig
* @author Cloud9
* @createTime 2022/5/26 17:31
*/
private static Configuration initConfiguration() {
final Profile.Section section = configFile.get("doc-config"); return Configuration.builder()
.title(section.get("title", "测试文档"))
.organization(section.get("organization", "cloud9"))
.organizationUrl(section.get("organizationUrl", "https://home.cnblogs.com/u/mindzone/"))
.version(section.get("version", "1.0.0")) //版本
.description(section.get("description", "数据库设计文档生成")) //描述
//数据源
.dataSource( initDataSource())
//生成配置
.engineConfig(initEngineConfig())
//生成配置
.produceConfig( initProcessConfig())
.build();
} public static void main(String[] args) {
//执行生成
new DocumentationExecute(initConfiguration()).execute();
}
}
配置文件:
[mysql-config]
driverClassname = com.mysql.cj.jdbc.Driver
jdbcUrl = jdbc:mysql://localhost:3306/ymcd_aisw?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username = root
password = 123456
useInformationSchema = true
max-pool-size = 5 [template-engine-config]
output-dir = .
file-name = xx系统MySQL设计文档 [designate-config] [ignore-config]
table = test_user, test_group
prefix = gen_, qrtz_, sys_
suffix = _test [doc-config]
title = xx系统MySQL设计文档
version = 1.0.0
description = xx系统设计文档生成
organization = Cloud9
organizationUrl = https://home.cnblogs.com/u/mindzone/
配置文件存放位置:

打包项目:

声明启动类:

无主清单,请参考:
https://blog.csdn.net/weixin_49736959/article/details/108969870
文件结构:

【Java】Mysql文档生成工具的更多相关文章
- 基于Mybatis的Mysql数据库文档生成工具,支持生成docx(原创)
今天不写android--也写写数据库相关的东西 -------------------- 今日老夫闲来无事,设计了一款数据库文档生成工具 眼下仅仅支持mysql 主要是生成docx的 下载链接:下载 ...
- Java 的 Api 文档生成工具 JApiDocs 程序文档工具
JApiDocs 详细介绍 简介 JApiDocs 是一个符合 Java 编程习惯的 Api 文档生成工具.最大程度地利用 Java 的语法特性,你只管用心设计好接口,添加必要的注释,JApiDocs ...
- 【转载】Java Restful API 文档生成工具 smart-doc
谁说生成api文档就必须要定义注解? 谁说生成接口请求和返回示例必须要在线? 用代码去探路,不断尝试更多文档交付的可能性. 如果代码有生命,为什么不换种方式和它对话! 一.背景 没有背景.就自己做自己 ...
- DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...
- 文档生成工具doxygen+图像生成工具GraphViz
文档生成工具doxygen+图像生成工具GraphViz 虽然jdk自带的javadoc也很好用,不过使用doxygen+GraphViz 的组合可以生成许多强大的图(类图.协作图.文件包含/被包含图 ...
- 使用Objective-C的文档生成工具:appledoc
使用Objective-C的文档生成工具:appledoc 前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象 Ja ...
- 使用Objective-C的文档生成工具
前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象Java语言本身就自带javadoc命令,可以从源码中抽取文档.今 ...
- Markdown 文档生成工具
之前用了很多Markdown 文档生成工具,发现有几个挺好用的,现在整理出来,方便大家快速学习. loppo: 非常简单的静态站点生成器 idoc:简单的文档生成工具 gitbook:大名鼎鼎的文档协 ...
- Doxygen自动文档生成工具在Eclipse中的集成及使用举例
你有为软件编写说明文档的苦恼吗?当别人甩给你一个庞大的系统,让你根据里面的代码注释理解后写出一份完整的开发文档,你会怎么办?一个个的看代码 然后耗时N天来写吗?这既是一份苦差事也极其耗时,有没有更好的 ...
- DBCHM -最简单、最实用的数据库文档生成工具
项目介绍 DBCHM 是一款数据库文档生成工具! 该工具从最初支持chm文档格式开始,通过开源,集思广益,不断改进,又陆续支持word.excel.pdf.html.xml.markdown等文档格式 ...
随机推荐
- Linux signal()函数
这是在网易云课堂学习Linux下的signal()函数的笔记,课程链接:https://study.163.com/course/courseLearn.htm?courseId=1002913011 ...
- Java中对的创建与引用
对象与引用 Java语言中除了基本数据类型以外都属于引用类型 Java中的对象是通过引用对其操作的 class Car{ String name; String color; int price; } ...
- 瑞数456vmp逆向分析
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...
- ETL工具-nifi干货系列 第十四讲 nifi处理器PublishKafka实战教程
1.kettle的kafka生产者叫kafka producer,nifi中的相应处理器为PublishKafka,如下图所示: 可以很清楚的看到PublishKafka处理器支持多个版本的kafka ...
- C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证
C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证 参考了:https://www.cnblogs.com/-dawn/p/8598566.html GetLog4netI ...
- 性能分析: 快速定位SQL问题
在数据库性能调优的实践中,SQL性能分析是至关重要的一环.一个执行效率低下的SQL语句可能会导致整个系统的性能瓶颈. 为了快速定位并解决这些问题,我们需要对SQL进行性能分析.本文将介绍一些常用的方法 ...
- 非空处理 Java非空判断 非空处理及mysql数据库字段的not null
1.mysql## 去掉非空,如果非空又没有默认值,这样程序在添加数据的时候i,如果没有设置值就会报错.该操作很危险.##ALTER TABLE `order_test` ADD COLUMN `te ...
- APOLLO DEV环境列表无法显示解决,重启对应的Apollo服务
APOLLO DEV环境列表无法显示解决,重启对应的Apollo服务 找到项目中的apollo-core jar包中的配置文件,查看dev.meta的服务器配置IP:端口 apollo-env.pro ...
- 深入理解Android View(1)
做android其实也有一段时间了,我们每个人都会碰到一些这样或那样的问题,碰到问题了就拼命百度,可是发现,我们解决问题的能力并没有提升很多,所以我才有想总结一下我项目中所用过的相关知识,并了解一下A ...
- 解决模拟器中交换机不通的bug
模拟器实在是坑,相信大家都遇到过. 几个交换机连在一起,有冗余的线路,连两台PC,结果它们死活都通不了. 而且!!!交换机还会疯狂报错 *Aug 2 03:06:39.561: %AMDP2_FE-6 ...