Java 生成数据库表结构文档 工作需要熟悉表结构或书写数据字典开发文档,此时可以使用Screw+HikariCP实现生成数据库文档 Mysql数据库生成: 引入依赖包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <dependencies> <!-- Screw Core --> <dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</artifactId> <version>1.0 .2 </version> </dependency> <!-- HikariCP --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4 .5 </version> </dependency> <!-- Mysql Driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0 .20 </version> </dependency> </dependencies>
直接上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 // 数据源 HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver"); hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test01?serverTimezone=UTC"); hikariConfig.setUsername("root"); hikariConfig.setPassword("123456"); // 设置可以获取tables remarks信息 hikariConfig.addDataSourceProperty("useInformationSchema", "true"); hikariConfig.setMinimumIdle(2); hikariConfig.setMaximumPoolSize(5); DataSource dataSource = new HikariDataSource(hikariConfig); // 1、生成文件配置 EngineConfig engineConfig = EngineConfig.builder() // 生成文件路径 .fileOutputDir("D://11") // 打开目录 .openOutputDir(false) // 文件类型 EngineFileType.DOC .fileType(EngineFileType.HTML) // 生成模板实现 .produceType(EngineTemplateType.freemarker).build(); // 忽略表名 List<String> ignoreTableName = Arrays.asList("test"); // 忽略表前缀 List<String> ignorePrefix = Arrays.asList("_a", "a"); // 忽略表后缀 List<String> ignoreSuffix = Arrays.asList("_bak", "bak"); // 2、配置想要忽略的表 ProcessConfig processConfig = ProcessConfig.builder().ignoreTableName(ignoreTableName) .ignoreTablePrefix(ignorePrefix).ignoreTableSuffix(ignoreSuffix).build(); // 3、生成文档配置(包含以下自定义版本号、描述等配置连接) Configuration config = Configuration.builder().version("1.0.0").description("数据库文档").dataSource(dataSource) .engineConfig(engineConfig).produceConfig(processConfig).build(); // 4、执行生成 new DocumentationExecute(config).execute();
注:新版mysql驱动url后面需要加?serverTimezone=UTC
否则会报:Failed to initialize pool: The server time zone value ‘�й���ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the ‘serverTimezone’ configuration property) to use a more specifc time zone value if you want to utilize time zone support.
Oracle数据库生成:
注意jdk8对应驱动 ojdbc8
相关依赖 orai18n 防止乱码
注意以下依赖
com.oracle.database.jdbc
ojdbc8
21.3.0.0
cn.easyproject
orai18n
12.1.0.2.0
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 // 数据源 HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName("oracle.jdbc.Driver"); hikariConfig.setJdbcUrl("jdbc:oracle:thin:@172.0.0.1:1521:test"); hikariConfig.setUsername("zhangsan"); hikariConfig.setPassword("asdf2151#415"); // 设置可以获取tables remarks信息 hikariConfig.addDataSourceProperty("useInformationSchema", "true"); hikariConfig.setMinimumIdle(2); hikariConfig.setMaximumPoolSize(5); DataSource dataSource = new HikariDataSource(hikariConfig); // 1、生成文件配置 EngineConfig engineConfig = EngineConfig.builder() // 生成文件路径 .fileOutputDir("D:\\test01") // 打开目录 .openOutputDir(false) // 文件类型 .fileType(EngineFileType.HTML) // 生成模板实现 .produceType(EngineTemplateType.freemarker).build(); // 忽略表名 List<String> ignoreTableName = Arrays.asList("test"); // 忽略表前缀 List<String> ignorePrefix = Arrays.asList("test_", "test"); // 忽略表后缀 List<String> ignoreSuffix = Arrays.asList("_bak", "_tmp"); // 2、配置想要忽略的表 ProcessConfig processConfig = ProcessConfig.builder().ignoreTableName(ignoreTableName) .ignoreTablePrefix(ignorePrefix).ignoreTableSuffix(ignoreSuffix).build(); // 3、生成文档配置 Configuration config = Configuration.builder().version("1.0.0").description("数据库文档").dataSource(dataSource) .engineConfig(engineConfig).produceConfig(processConfig).build(); // 4、执行生成 new DocumentationExecute(config).execute();
执行后生成html文档部分如下 :
表名:sys_log
说明:日志表
数据列:
序号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
id
bigint
19
0
N
Y
ID
2
log_type
varchar
50
0
N
N
日志类型
3
create_user_code
varchar
64
0
N
N
创建用户编码
4
create_user_name
varchar
100
0
N
N
创建用户名称
5
create_date
datetime
19
0
N
N
创建时间
6
request_uri
varchar
500
0
Y
N
请求URI
7
request_method
varchar
10
0
Y
N
请求方式
8
request_params
text
65535
0
Y
N
请求参数
9
request_ip
varchar
20
0
N
N
请求IP
10
server_address
varchar
50
0
N
N
请求服务器地址
11
is_exception
char
1
0
Y
N
是否异常
12
exception_info
text
65535
0
Y
N
异常信息
13
start_time
datetime
19
0
N
N
开始时间
14
end_time
datetime
19
0
N
N
结束时间
15
execute_time
int
10
0
Y
N
执行时间
16
user_agent
varchar
500
0
Y
N
用户代理
17
device_name
varchar
100
0
Y
N
操作系统
18
browser_name
varchar
100
0
Y
N
浏览器名称