# db_doc **Repository Path**: hm_coder/db_doc ## Basic Information - **Project Name**: db_doc - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-03 - **Last Updated**: 2020-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一键快速生成数据库的文档 ## 简介   在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人,于是萌生了要自己写一个插件工具的想法,但由于自己前期在程序设计上没有很多造诣,且能力偏低,有想法并不能很好实现,随着工作阅历的增加,和知识的不断储备,终于在2020年的3月中旬开始进行编写,4月上旬完成初版,想完善差不多在开源,但由于工作太忙,业余时间不足,没有在进行完善,到了6月份由于工作原因、频繁设计和更改数据库、经常使用自己写的此插件、节省了很多时间,解决了很多问题 ,在仅有且不多的业余时间中、进行开源准备,于2020年6月22日,开源,欢迎大家使用、建议、并贡献。   关于名字,想一个太难了,好在我这个聪明的小脑瓜灵感一现,怎么突出它的小,但重要呢?从小就学过雷锋的螺丝钉精神,摘自雷锋日记:虽然是细小的螺丝钉,是个细微的小齿轮,然而如果缺了它,那整个的机器就无法运转了,慢说是缺了它,即使是一枚小螺丝钉没拧紧,一个小齿轮略有破损,也要使机器的运转发生故障的...,感觉自己写的这个工具,很有这意味,虽然很小、但是开发中缺了它还不行,于是便起名为screw(螺丝钉)。 ## 特点 * 简洁、轻量、设计良好 * 多数据库支持 * 多种格式文档 * 灵活扩展 * 支持自定义模板 ## 目前支持数据库 * MySQL * MariaDB * TIDB * Oracle * SqlServer * PostgreSQL * Cache DB(2016) ## 文档生成支持 * html * word * markdwon ## 快速开始 ### maven插件 ```xml cn.smallbun.screw screw-maven-plugin ${lastVersion} com.zaxxer HikariCP 3.4.5 mysql mysql-connector-java 8.0.20 root password com.mysql.cj.jdbc.Driver jdbc:mysql://127.0.0.1:3306/xxxx HTML false freemarker 测试文档名称 数据库文档生成 ${project.version} 数据库文档 compile run ``` 选择 Maven --> Plugins --> screw 下的插件选项,双击运行即可 ### SpringBoot集成方式 1. 添加依赖,详见pom.xml 2. 编写引导类和编写application.yml 配置文件 ```yaml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root url: jdbc:mysql://192.168.200.129:3306/leadnews_article xa: properties: useInformationSchema: true # 设置 useInformationSchema 可以获取tables注释信息 ``` 3. 编写代码 ```java 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; import com.itheima.App; 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 javax.sql.DataSource; import java.util.Arrays; import java.util.List; /** * 参考官网:https://toscode.gitee.com/leshalv/screw */ @SpringBootTest(classes = App.class) @RunWith(SpringRunner.class) public class ScrewApplicationTests { @Autowired ApplicationContext applicationContext; @Test public void contextLoads() { DataSource dataSourceMysql = applicationContext.getBean(DataSource.class); // 生成文件配置 EngineConfig engineConfig = EngineConfig.builder() // 生成文件路径,自己mac本地的地址,这里需要自己更换下路径 .fileOutputDir("/Users/itcast/workcode/workcode/hf_28/db_doc/doc") // 打开目录 .openOutputDir(false) // 文件类型 .fileType(EngineFileType.MD) // 生成模板实现 .produceType(EngineTemplateType.freemarker).build(); // 生成文档配置(包含以下自定义版本号、描述等配置连接) Configuration config = Configuration.builder() .version("1.0.3") .description("生成文档信息描述") .dataSource(dataSourceMysql) .engineConfig(engineConfig) .produceConfig(getProcessConfig()) .build(); // 执行生成 new DocumentationExecute(config).execute(); } /** * 配置想要生成的表+ 配置想要忽略的表 * * @return 生成表配置 */ public static ProcessConfig getProcessConfig() { // 忽略表名 List ignoreTableName = Arrays.asList("a", "test_group"); // 忽略表前缀,如忽略a开头的数据库表 List ignorePrefix = Arrays.asList(); // 忽略表后缀 List ignoreSuffix = Arrays.asList("_test", "czb_"); return ProcessConfig.builder() //根据名称指定表生成 // .designatedTableName(Arrays.asList("fire_user")) //根据表前缀生成 //.designatedTablePrefix(new ArrayList<>()) //根据表后缀生成 //.designatedTableSuffix(new ArrayList<>()) //忽略表名 .ignoreTableName(ignoreTableName) //忽略表前缀 .ignoreTablePrefix(ignorePrefix) //忽略表后缀 .ignoreTableSuffix(ignoreSuffix).build(); } } ``` 4. 运行即可