實(shí)用!一鍵生成數(shù)據(jù)庫文檔,堪稱數(shù)據(jù)庫界的Swagger
GitHub里找,看看有沒有什么工具可以用,結(jié)果就真的發(fā)現(xiàn)了寶藏,screw(螺絲釘),居然可以生成數(shù)據(jù)庫文檔,優(yōu)秀啊~。
一、數(shù)據(jù)庫支持
MySQL
MariaDB
TIDB
Oracle
SqlServer
PostgreSQL
Cache DB
二、配置
1、pom文件
screw核心包,HikariCP數(shù)據(jù)庫連接池,HikariCP號(hào)稱性能最出色的數(shù)據(jù)庫連接池。
<dependency>
????<groupId>cn.smallbun.screwgroupId>
????<artifactId>screw-coreartifactId>
????<version>1.0.3version>
dependency>
<dependency>
????<groupId>com.zaxxergroupId>
????<artifactId>HikariCPartifactId>
????<version>3.4.5version>
dependency>
<dependency>
????<groupId>mysqlgroupId>
????<artifactId>mysql-connector-javaartifactId>
????<version>8.0.20version>
dependency>
2、配置數(shù)據(jù)源
useInformationSchema?可以獲取tables注釋信息。spring.datasource.url=jdbc:mysql://45.93.1.5:3306/fire?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.xa.properties.useInformationSchema=true?
3、screw 核心配置
screw有兩種執(zhí)行方式,第一種是pom文件配置,另一種是代碼執(zhí)行。?
????<plugins>
????????<plugin>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-maven-pluginartifactId>
????????plugin>
????????<plugin>
????????????<groupId>cn.smallbun.screwgroupId>
????????????<artifactId>screw-maven-pluginartifactId>
????????????<version>1.0.3version>
????????????<dependencies>
????????????????
????????????????<dependency>
????????????????????<groupId>com.zaxxergroupId>
????????????????????<artifactId>HikariCPartifactId>
????????????????????<version>3.4.5version>
????????????????dependency>
????????????????
????????????????<dependency>
????????????????????<groupId>mysqlgroupId>
????????????????????<artifactId>mysql-connector-javaartifactId>
????????????????????<version>8.0.20version>
????????????????dependency>
????????????dependencies>
????????????<configuration>
????????????????
????????????????<username>rootusername>
????????????????
????????????????<password>123456password>
????????????????
????????????????<driverClassName>com.mysql.cj.jdbc.DriverdriverClassName>
????????????????
????????????????<jdbcUrl>jdbc:mysql://41.92.6.5:3306/firejdbcUrl>
????????????????
????????????????<fileType>HTMLfileType>
????????????????
????????????????<openOutputDir>falseopenOutputDir>
????????????????
????????????????<produceType>freemarkerproduceType>
????????????????
????????????????
????????????????
????????????????<description>數(shù)據(jù)庫文檔生成description>
????????????????
????????????????<version>${project.version}version>
????????????????
????????????????<title>fire數(shù)據(jù)庫文檔title>
????????????configuration>
????????????<executions>
????????????????<execution>
????????????????????<phase>compilephase>
????????????????????<goals>
????????????????????????<goal>rungoal>
????????????????????goals>
????????????????execution>
????????????executions>
????????plugin>
????plugins>
</build>
maven project->screw?雙擊執(zhí)行ok。
@SpringBootTest
public?class?ScrewApplicationTests?{
????@Autowired
????ApplicationContext?applicationContext;
????@Test
????void?contextLoads()?{
????????DataSource?dataSourceMysql?=?applicationContext.getBean(DataSource.class);
????????//?生成文件配置
????????EngineConfig?engineConfig?=?EngineConfig.builder()
????????????????//?生成文件路徑,自己mac本地的地址,這里需要自己更換下路徑
????????????????.fileOutputDir("D:/")
????????????????//?打開目錄
????????????????.openOutputDir(false)
????????????????//?文件類型
????????????????.fileType(EngineFileType.HTML)
????????????????//?生成模板實(shí)現(xiàn)
????????????????.produceType(EngineTemplateType.freemarker).build();
????????//?生成文檔配置(包含以下自定義版本號(hào)、描述等配置連接)
????????Configuration?config?=?Configuration.builder()
????????????????.version("1.0.3")
????????????????.description("生成文檔信息描述")
????????????????.dataSource(dataSourceMysql)
????????????????.engineConfig(engineConfig)
????????????????.produceConfig(getProcessConfig())
????????????????.build();
????????//?執(zhí)行生成
????????new?DocumentationExecute(config).execute();
????}
????/**
?????*?配置想要生成的表+?配置想要忽略的表
?????*
?????*?@return?生成表配置
?????*/
????public?static?ProcessConfig?getProcessConfig()?{
????????//?忽略表名
????????List<String>?ignoreTableName?=?Arrays.asList("a",?"test_group");
????????//?忽略表前綴,如忽略a開頭的數(shù)據(jù)庫表
????????List<String>?ignorePrefix?=?Arrays.asList("a",?"t");
????????//?忽略表后綴
????????List<String>?ignoreSuffix?=?Arrays.asList("_test",?"czb_");
????????return?ProcessConfig.builder()
????????????????//根據(jù)名稱指定表生成
????????????????.designatedTableName(Arrays.asList("fire_user"))
????????????????//根據(jù)表前綴生成
????????????????.designatedTablePrefix(new?ArrayList<>())
????????????????//根據(jù)表后綴生成
????????????????.designatedTableSuffix(new?ArrayList<>())
????????????????//忽略表名
????????????????.ignoreTableName(ignoreTableName)
????????????????//忽略表前綴
????????????????.ignoreTablePrefix(ignorePrefix)
????????????????//忽略表后綴
????????????????.ignoreTableSuffix(ignoreSuffix).build();
????}
}
4、文檔格式
screw?有?HTML、DOC、MD?三種格式的文檔。.fileType(EngineFileType.HTML)
pom文件MD</fileType>
DOC文檔樣式
HTML文檔樣式
MD文檔樣式
推薦閱讀:
喜歡我可以給我設(shè)為星標(biāo)哦


評(píng)論
圖片
表情
