官方地址:https://github.com/pingfangushi/screw
screw 螺丝钉,支持以下数据库
- MySQL
- MariaDB
- TIDB
- Oracle
- SqlServer
- PostgreSQL
- Cache DB(2016)
生产文档支持
- html
- word
- markdown
开始
添加依赖
<!-- 螺丝钉 -->
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.5</version>
</dependency>
新建执行方法,当然可以使用juint或者controller,怎么方便怎么弄
只需要修改这些个常量就可以,不需要太多改动
import cn.smallbun.screw.core.engine.EngineFileType;
import cn.smallbun.screw.core.engine.EngineTemplateType;
import java.util.ArrayList;
import java.util.List;
/**
* @Description 数据库文档一键生产
* @Author WangKun
* @Date 2024/9/20 15:45
* @Version
*/
public class GenerateDatabaseDocument {
/**
* @param args
* @Description 数据文档
* @Throws
* @Return void
* @Date 2024-09-20 16:34:50
* @Author WangKun
**/
public static void main(String[] args) {
DatabaseDocumentExecute.documentationExecute();
}
// 以下为数据库设置
// 驱动
public static final String DRIVER = "com.mysql.cj.jdbc.Driver";
// 主机
public static final String HOST = "127.0.0.1";
// 端口号
public static final String PORT = "3306";
// 数据库
public static final String DB = "数据库";
// URL
public static final String URL = "jdbc:mysql://" + HOST + ":" + PORT + "/" + DB + "?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true";
// 用户名
public static final String USER_NAME = "用户名";
// 密码
public static final String PASSWORD = "密码";
// 以下库表设置
// 忽略表名,多个使用逗号隔开,"",""
public static final List<String> IGNORE_TABLE_NAME = List.of("");
// 忽略表前缀,多个使用逗号隔开,"",""
public static final List<String> IGNORE_PREFIX = List.of("t_", "c_");
// 忽略表后缀,多个使用逗号隔开,"",""
public static final List<String> IGNORE_SUFFIX = List.of("_t", "_c");
// 以下是表指定生成
// 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
// 根据名称指定表生成
public static final List<String> DESIGNATED_TABLE_NAME = new ArrayList<>();
// 根据表前缀生成
public static final List<String> DESIGNATED_TABLE_PREFIX = new ArrayList<>();
// 根据表后缀生成
public static final List<String> DESIGNATED_TABLE_SUFFIX = new ArrayList<>();
//以下为生产文档设置
// 文件名称
public static final String FILE_NAME = "数据库文档";
// 版本
public static final String VERSION = "V1.0.0";
// 文档描述
public static final String DESCRIPTION = "数据库文档说明";
// 输出路径
public static final String OUTPUT_DIR = System.getProperty("user.home") + "/Desktop";
// 文档生成类型
public static final EngineFileType FILE_TYPE = EngineFileType.HTML;
// 文档生成模板
public static final EngineTemplateType PRODUCE_TYPE = EngineTemplateType.freemarker;
}
文档生产配置(这一块基本不需要动,只需要改动常量配置即可)
import cn.smallbun.screw.core.Configuration;
import cn.smallbun.screw.core.engine.EngineConfig;
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 javax.sql.DataSource;
import static com.harmonywisdom.GenerateDatabaseDocument.*;
/**
* @Description 文档生产配置
* @Author WangKun
* @Date 2024/9/20 10:51
* @Version
*/
public class DatabaseDocumentExecute {
/**
* @Description 生产文档
* @param
* @Throws
* @Return void
* @Date 2024-09-20 17:02:40
* @Author WangKun
**/
public static void documentationExecute(){
// 数据源
DataSource dataSource = getDataSource();
// 生成配置
EngineConfig engineConfig = EngineConfig.builder()
// 生成文件路径
.fileOutputDir(OUTPUT_DIR)
// 打开目录
.openOutputDir(false)
// 文件类型
.fileType(FILE_TYPE)
// 生成模板实现
.produceType(PRODUCE_TYPE)
// 自定义文件名称
.fileName(FILE_NAME)
.build();
// 配置忽略的表
ProcessConfig processConfig = ProcessConfig.builder()
//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
.designatedTableName(DESIGNATED_TABLE_NAME)
.designatedTablePrefix(DESIGNATED_TABLE_PREFIX)
.designatedTableSuffix(DESIGNATED_TABLE_SUFFIX)
.ignoreTableName(IGNORE_TABLE_NAME)
.ignoreTablePrefix(IGNORE_PREFIX)
.ignoreTableSuffix(IGNORE_SUFFIX)
.build();
// 生成文档配置(包含以下自定义版本号、描述等配置连接)
Configuration config = Configuration.builder()
// 版本
.version(VERSION)
// 文档描述
.description(DESCRIPTION)
// 数据源
.dataSource(dataSource)
// 生产配置
.engineConfig(engineConfig)
// 忽略配置
.produceConfig(processConfig)
.build();
// 执行生成
new DocumentationExecute(config).execute();
}
/**
* @Description 数据源配置
* @param
* @Throws
* @Return javax.sql.DataSource
* @Date 2024-09-20 16:25:31
* @Author WangKun
**/
public static DataSource getDataSource() {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName(DRIVER);
hikariConfig.setJdbcUrl(URL);
hikariConfig.setUsername(USER_NAME);
hikariConfig.setPassword(PASSWORD);
// 设置可以获取tables remarks信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
return new HikariDataSource(hikariConfig);
}
}
效果: