资料参考:

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文档生成工具的更多相关文章

  1. 基于Mybatis的Mysql数据库文档生成工具,支持生成docx(原创)

    今天不写android--也写写数据库相关的东西 -------------------- 今日老夫闲来无事,设计了一款数据库文档生成工具 眼下仅仅支持mysql 主要是生成docx的 下载链接:下载 ...

  2. Java 的 Api 文档生成工具 JApiDocs 程序文档工具

    JApiDocs 详细介绍 简介 JApiDocs 是一个符合 Java 编程习惯的 Api 文档生成工具.最大程度地利用 Java 的语法特性,你只管用心设计好接口,添加必要的注释,JApiDocs ...

  3. 【转载】Java Restful API 文档生成工具 smart-doc

    谁说生成api文档就必须要定义注解? 谁说生成接口请求和返回示例必须要在线? 用代码去探路,不断尝试更多文档交付的可能性. 如果代码有生命,为什么不换种方式和它对话! 一.背景 没有背景.就自己做自己 ...

  4. DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

    前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...

  5. 文档生成工具doxygen+图像生成工具GraphViz

    文档生成工具doxygen+图像生成工具GraphViz 虽然jdk自带的javadoc也很好用,不过使用doxygen+GraphViz 的组合可以生成许多强大的图(类图.协作图.文件包含/被包含图 ...

  6. 使用Objective-C的文档生成工具:appledoc

    使用Objective-C的文档生成工具:appledoc 前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象 Ja ...

  7. 使用Objective-C的文档生成工具

    前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象Java语言本身就自带javadoc命令,可以从源码中抽取文档.今 ...

  8. Markdown 文档生成工具

    之前用了很多Markdown 文档生成工具,发现有几个挺好用的,现在整理出来,方便大家快速学习. loppo: 非常简单的静态站点生成器 idoc:简单的文档生成工具 gitbook:大名鼎鼎的文档协 ...

  9. Doxygen自动文档生成工具在Eclipse中的集成及使用举例

    你有为软件编写说明文档的苦恼吗?当别人甩给你一个庞大的系统,让你根据里面的代码注释理解后写出一份完整的开发文档,你会怎么办?一个个的看代码 然后耗时N天来写吗?这既是一份苦差事也极其耗时,有没有更好的 ...

  10. DBCHM -最简单、最实用的数据库文档生成工具

    项目介绍 DBCHM 是一款数据库文档生成工具! 该工具从最初支持chm文档格式开始,通过开源,集思广益,不断改进,又陆续支持word.excel.pdf.html.xml.markdown等文档格式 ...

随机推荐

  1. Visual Studio(VS)常用快捷键整理

    ​ 前言 在使用Visual Studio编写代码时,使用快捷键能够提高编码效率,作为程序员,我们有必要记住一些比较常用的快捷键.这篇文章将记录我自己比较常用的快捷键,并根据我的使用情况,更新常用快捷 ...

  2. C#.NET HTTP Request 跳过自签名证书校验。

    public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain ...

  3. java对列表分页的方法,及mysql分页的sql原型

    java对列表分页的方法,及mysql分页的sql原型 1.mysql * mysql分页查询: * select <include refid="Base_Column_List&q ...

  4. .Net Core5.0中Autofac依赖注入整合多层,项目中可直接用

    一.配置Autofac替换内置DI 1.安装Nuget包:Autofac,Autofac.Extensions.DependencyInjection 2.Program.cs中CreateHostB ...

  5. C++与Unity C#交互

    C++与Unity C#交互 C++转C#小工具:https://github.com/jaredpar/pinvoke-interop-assistant C++ Custom.h #pragma ...

  6. 如何应用 matrix3d 映射变幻

    如何应用 matrix3d 映射变幻 先上 demo 记得是在 2015 看到过的一个 html5 演示效果, 很惊艳 当时没明白如何实现,现在我会了,做一个类似的: 又弄了一个拖动的 demo 我数 ...

  7. Js 实现导航li列表,选中时,显示选中样式

    结合Django项目实现 实现步骤: html页面部分,使用bootstrap.css中的样式(不用可忽略,主要class样式),要引用bootstrap.css,使用到actvie样式: <l ...

  8. Stable Diffusion 生成个性图片指南

    在当今人工智能领域,midjourney无疑是生成图片的王者,但是苦于付费才能使用,今天我就给大家分享一下midjourney平替stable diffusion,实现本地生成不逊色于midjourn ...

  9. 01-前端开发Vscode插件配置

    01 自动保存配置 02 空格渲染方式 配置好以后,可以看到代码的空格有几个,以点的方式呈现,1个点表示1个空格 03 图标插件 VSCode Great Icons 04 缩进 推荐使用2 05 v ...

  10. Goland断点调试一直进gopark

    现象 使用Goland断点调试一直进gopark 分析 直接运行调试,不打断点,会有一个warning: undefined behavior - version of Delve is too ol ...