【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等文档格式 ...
随机推荐
- ansible搭建
ansible配置步骤 1.创建用户 2.用户提权 3.用户免密 4.cp ansible配置文件 5.配置主机清单 6.修改ansible 用户路径下的配置文件 1.创建用户(都要做) [root@ ...
- Vue学习:8.v标签综合-强化版
通过前几节的认识和学习,我们掌握了常用v标签的用法,这一节再来巩固提高一下吧. 实例:成绩面板 实现功能: 主体由两大部分组成:表格+表单.这个表格可以显示多科成绩,并具有表头.删除以及底部统计功能. ...
- json字符串转换对象或列表,多了字段不会报错
json字符串转换对象或列表,多了字段不会报错 //DEMO1 转换对象 应用 riskId public class Item { private String id; private String ...
- SQLBI_精通DAX课程笔记_01_DAX介绍
一:函数式语言 DAX是一个函数式语言,应用于Analysis Services , PowerPivot , 和Power Bi . 二:共同与不同 2.1 共同点 DAX与PowerPivot ...
- ElasticSearch多语义命令在query和aggregation中的区别
初学ES时,有两个较为特殊的命令让我困惑 terms 在query中使用terms,代表匹配多个查询条件 在aggregation中使用terms,代表按指定filed进行groud by分组聚合 f ...
- Vulnhub Mercy Walkthrough
Recon 首先进行二层扫描. ┌──(kali㉿kali)-[~] └─$ sudo netdiscover -r 192.168.80.0/24 Currently scanning: Finis ...
- .NET 个人博客-首页排版优化-2
个人博客-首页排版优化-2 原本这篇文章早就要出了的,结果之前买的服务器服务商跑路了,导致博客的数据缺失了部分.我是买了一年的服务器,然后用了3个月,国内跑路云太多了,然后也是花钱重新去别的服务商买了 ...
- C# Linq俩个list<Datarow> 取差集,并自定义字段
可以自定义类 ,也可以从参考官网文档:Enumerable.Except 方法 (System.Linq) | Microsoft Learn List<DataRow> list1 = ...
- Linux内存不够了?看看如何开启虚拟内存增加内存使用量
1.为什么要使用虚拟内存 当我们没有多余的钱去购买大内存的云服务器时,但是当前服务器里面的软件和程序运行的比较多导致内存不够用了.这个时候可以通过增加虚拟内存来扩大内存容量.但是在启用虚拟内存时,需要 ...
- ARC108C
考虑一颗树怎么染色. 每个子节点染成边的颜色,如果与父亲节点相同,就随便染色(这条边的限制已经被父亲节点满足). 那么一定可以染色. 所以把原图跑最小生成树再按上述方法染色即可. 倘若原图不连通,那么 ...