git代码地址
https://gitee.com/zhoujinchuan/database-documents-gene.git
效果图
word
html
mkdown
实现
1、引入对应依赖
<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>
<version>8.0.29</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.1</version>
</dependency>
2、配置dataSouce数据源
public class DataSourceConfig {
/**
* 数据库驱动类名,用于存储数据库连接相关的配置信息。
*/
public static String DRIVER_CLASS_NAME = "com.mysql.cj.jdbc.Driver";
/**
* 数据库连接URL,包含了数据库的位置、端口、数据库名以及连接参数。
* useUnicode=true 表示使用Unicode字符集。
* characterEncoding=utf-8 指定字符编码为UTF-8。
* serverTimezone=GMT%2b8 指定服务器时区为东八区。
* useSSL=false 表示不使用SSL连接。
* allowMultiQueries=true 允许执行多语句查询。
*/
public static String URL = "jdbc:mysql://127.0.0.1:3306/film?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2b8&useSSL=false&allowMultiQueries=true";
/**
* 数据库的用户名
*/
public static String USERNAME = "root";
/**
* 数据库的密码
*/
public static String PASSWORD = "123456";
}
3、生成文档方法
/**
* 生成文件
* @param fileOutputDir
* @param fileName
*/
public static void gene(String fileOutputDir, String fileName ,EngineFileType engineFileType){
//数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName(DataSourceConfig.DRIVER_CLASS_NAME);
hikariConfig.setJdbcUrl(DataSourceConfig.URL);
hikariConfig.setUsername(DataSourceConfig.USERNAME);
hikariConfig.setPassword(DataSourceConfig.PASSWORD);
//设置可以获取tables remarks信息
//启用 useInformationSchema 可以提高性能,因为 information_schema 是数据库中存储元数据的特殊模式,它包含了数据库的所有元数据信息。通过使用 information_schema,可以避免直接访问数据库文件,从而提高查询元数据的效率。
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
//生成配置
EngineConfig engineConfig = EngineConfig.builder()
//生成文件路径
.fileOutputDir(fileOutputDir)
//打开目录
.openOutputDir(true)
//文件类型 -- 选择doc
.fileType(engineFileType)
//生成模板实现
.produceType(EngineTemplateType.freemarker)
//自定义文件名称
.fileName(fileName).build();
//忽略表
ArrayList<String> ignoreTableName = new ArrayList<>();
//ignoreTableName.add("test_user");
//忽略表前缀
ArrayList<String> ignorePrefix = new ArrayList<>();
//ignorePrefix.add("test_");
//忽略表后缀
ArrayList<String> ignoreSuffix = new ArrayList<>();
//ignoreSuffix.add("_test");
ProcessConfig processConfig = ProcessConfig.builder()
//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
//根据名称指定表生成
.designatedTableName(new ArrayList<>())
//根据表前缀生成
.designatedTablePrefix(new ArrayList<>())
//根据表后缀生成
.designatedTableSuffix(new ArrayList<>())
//忽略表名
.ignoreTableName(ignoreTableName)
//忽略表前缀
.ignoreTablePrefix(ignorePrefix)
//忽略表后缀
.ignoreTableSuffix(ignoreSuffix).build();
//配置
Configuration config = Configuration.builder()
//版本
.version("1.0.0")
//描述
.description(fileName + "生成")
//数据源
.dataSource(dataSource)
//生成配置
.engineConfig(engineConfig)
//生成配置
.produceConfig(processConfig)
.build();
//执行生成
new DocumentationExecute(config).execute();
}
4、编写方法入口
public static void main(String[] args) {
//文件本地保存地址
String fileOutputDir = "C:\\Users\\Administrator\\Desktop\\demo";
GenerateDoc.gene(fileOutputDir, "电影系统数据库设计文档", EngineFileType.MD);
}