【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
文件结构:


浙公网安备 33010602011771号