SpringBoot2.x 集成Screw 生成数据库文档解析

java哥 阅读:205 2021-03-31 12:44:11 评论:0

Screw简介:

       在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人,于是萌生了要自己写一个插件工具的想法,但由于自己前期在程序设计上没有很多造诣,且能力偏低,有想法并不能很好实现,随着工作阅历的增加,和知识的不断储备,终于在2020年的3月中旬开始进行编写,4月上旬完成初版,想完善差不多在开源,但由于工作太忙,业余时间不足,没有在进行完善,到了6月份由于工作原因、频繁设计和更改数据库、经常使用自己写的此插件、节省了很多时间,解决了很多问题 ,在仅有且不多的业余时间中、进行开源准备,于2020年6月22日,开源,欢迎大家使用、建议、并贡献。
  关于名字,想一个太难了,好在我这个聪明的小脑瓜灵感一现,怎么突出它的小,但重要呢?从小就学过雷锋的螺丝钉精神,摘自雷锋日记:虽然是细小的螺丝钉,是个细微的小齿轮,然而如果缺了它,那整个的机器就无法运转了,慢说是缺了它,即使是一枚小螺丝钉没拧紧,一个小齿轮略有破损,也要使机器的运转发生故障的...,感觉自己写的这个工具,很有这意味,虽然很小、但是开发中缺了它还不行,于是便起名为screw(螺丝钉)。

Screw 特点:

  • 简洁、轻量、设计良好

  • 多数据库支持

  • 多种格式文档

  • 灵活扩展

  • 支持自定义模板

Screw支持数据库:

  • MySQL
  •  MariaDB
  •  TIDB
  •  Oracle
  •  SqlServer
  •  PostgreSQL
  •  Cache DB(2016)

Screw支持文档格式:

  • html
  •  word
  •  markdown

Screw 官网地址

https://toscode.gitee.com/leshalv/screw

SpringBoot2.x 集成Screw 生成数据库文档

1、pom.xml 依赖添加

	<!-- 数据库文档自动生成 --> 
		<dependency> 
			<groupId>cn.smallbun.screw</groupId> 
			<artifactId>screw-core</artifactId> 
			<version>1.0.5</version> 
		</dependency> 
		<dependency> 
			<groupId>org.freemarker</groupId> 
			<artifactId>freemarker</artifactId> 
			<version>2.3.30</version> 
		</dependency>

2、编写数据库文档生成测试类

package com.zzg; 
 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
 
import javax.sql.DataSource; 
 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.boot.test.context.SpringBootTest; 
import org.springframework.context.ApplicationContext; 
import org.springframework.test.context.junit4.SpringRunner; 
 
import com.alibaba.druid.pool.DruidDataSource; 
import com.zaxxer.hikari.HikariConfig; 
import com.zaxxer.hikari.HikariDataSource; 
 
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; 
 
@SpringBootTest 
public class ScrewApplicationTest { 
 
	@Test 
	public void contextLoads() { 
		 //数据源 
        HikariConfig hikariConfig = new HikariConfig(); 
        hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver"); 
        hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/baoan_db?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true&allowMultiQueries=true"); 
        hikariConfig.setUsername("root"); 
        hikariConfig.setPassword("123456"); 
        //设置能够获取tables remarks信息 
        hikariConfig.addDataSourceProperty("useInformationSchema", "true"); 
        hikariConfig.setMinimumIdle(2); 
        hikariConfig.setMaximumPoolSize(5); 
        DataSource dataSource = new HikariDataSource(hikariConfig); 
 
		// 生成文件配置 
		EngineConfig engineConfig = EngineConfig.builder() 
				// 生成文件路径,自己mac本地的地址,这里需要自己更换下路径 
				.fileOutputDir("D:\\doc") 
				// 打开目录 
				.openOutputDir(false) 
				// 文件类型 
				.fileType(EngineFileType.HTML) 
				// 生成模板实现 
				.produceType(EngineTemplateType.freemarker).build(); 
 
		// 生成文档配置(包含以下自定义版本号、描述等配置连接) 
		Configuration config = Configuration.builder().version("1.0.0").description("生成文档信息描述") 
				.dataSource(dataSource).engineConfig(engineConfig).produceConfig(getProcessConfig()).build(); 
 
		// 执行生成 
		new DocumentationExecute(config).execute(); 
	} 
 
	/** 
	 * 配置想要生成的表+ 配置想要忽略的表 
	 *  
	 * @return 生成表配置 
	 */ 
	public static ProcessConfig getProcessConfig() { 
		// 忽略表名 
		List<String> ignoreTableName = Arrays.asList("aa", "test_group"); 
		// 忽略表前缀,如忽略a开头的数据库表 
		List<String> ignorePrefix = Arrays.asList("a", "t"); 
		// 忽略表后缀 
		List<String> ignoreSuffix = Arrays.asList("_test", "czb_"); 
 
		return ProcessConfig.builder() 
				// 根据名称指定表生成 
				.designatedTableName(new ArrayList<>()) 
				// 根据表前缀生成 
				.designatedTablePrefix(new ArrayList<>()) 
				// 根据表后缀生成 
				.designatedTableSuffix(new ArrayList<>()) 
				// 忽略表名 
				.ignoreTableName(ignoreTableName) 
				// 忽略表前缀 
				.ignoreTablePrefix(ignorePrefix) 
				// 忽略表后缀 
				.ignoreTableSuffix(ignoreSuffix).build(); 
	} 
 
} 

3、启动

点击ScrewApplicationTest->contextLoads启动,运行结果,如下

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
KIKK导航

KIKK导航

关注我们