数据库文档是咱们在企业项目开发中须要交付的文档,一般须要开发人员去手工编写。编写完成后,数据库发生变动又须要手动的进行修改,从而浪费了大量的人力。而且这种文档并无什么技术含量,被安排作这个工做的程序员每每本身内心会有抵触情绪,悲观的预期本身在团队的位置,形成离职也是可能的。以下面的这种文档的内容:html
笔者最近在github上面发现一个数据库文档生成工具:screw(螺丝钉)。该工具可以经过简单地配置,快速的根据数据库表结构进行逆向工程,将数据库表结构及字段逆向生成为文档。vue
mvn中央仓库查看最新版本,将以下的maven坐标引入到Spring Boot项目中去:java
<dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</artifactId> <version>1.0.3</version> </dependency>
从maven仓库的编译依赖中能够看到,screw-core其实现依赖了以下的内容。重点关注freemarker,由于该项目是使用freemarker做为模板生成文档。mysql
除此以外,screw使用了HikariCP做为数据库链接池,因此:git
以上的工做都作好以后,咱们就能够来配置文档生成参数了。实现文档生成有两种方式,一种是写代码,一种是使用maven 插件。程序员
因此maven插件的这种方式我就不给你们演示了,直接把下面的代码Ctrl + C/V到你的src/test/java目录下。简单的修改配置,运行就能够了github
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.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.Test; import javax.sql.DataSource; import java.util.ArrayList; public class ScrewTest { @Test void testScrew() { //数据源 HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver"); hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database"); hikariConfig.setUsername("db-username"); hikariConfig.setPassword("db-password"); //设置能够获取tables remarks信息 hikariConfig.addDataSourceProperty("useInformationSchema", "true"); hikariConfig.setMinimumIdle(2); hikariConfig.setMaximumPoolSize(5); DataSource dataSource = new HikariDataSource(hikariConfig); //生成配置 EngineConfig engineConfig = EngineConfig.builder() //生成文件路径 .fileOutputDir("d://") //打开目录 .openOutputDir(true) //生成文件类型:HTML .fileType(EngineFileType.HTML) //生成模板实现 .produceType(EngineTemplateType.freemarker) .build(); //忽略表 ArrayList<String> ignoreTableName = new ArrayList<>(); ignoreTableName.add("test_user"); ignoreTableName.add("test_group"); //忽略表前缀 ArrayList<String> ignorePrefix = new ArrayList<>(); ignorePrefix.add("test_"); //忽略表后缀 ArrayList<String> ignoreSuffix = new ArrayList<>(); ignoreSuffix.add("_test"); ProcessConfig processConfig = ProcessConfig.builder() //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其他表不生成、并跳过忽略表配置 //根据名称指定表生成 .designatedTableName(new ArrayList<>()) //根据表前缀生成 .designatedTablePrefix(new ArrayList<>()) //根据表后缀生成 .designatedTableSuffix(new ArrayList<>()) //忽略表名 .ignoreTableName(ignoreTableName) //忽略表前缀 .ignoreTablePrefix(ignorePrefix) //忽略表后缀 .ignoreTableSuffix(ignoreSuffix).build(); //配置 Configuration config = Configuration.builder() //版本 .version("1.0.0") //描述,文档名称 .description("数据库设计文档生成") //数据源 .dataSource(dataSource) //生成配置 .engineConfig(engineConfig) //生成配置 .produceConfig(processConfig) .build(); //执行生成 new DocumentationExecute(config).execute(); } }
在测试用例里面运行上面的代码,就会自动生成数据库文档到fileOutputDir配置目录下。spring
以为对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创做动力! 。另外,笔者最近一段时间输出了以下的精品内容,期待您的关注。sql