數據庫文檔是咱們在企業項目開發中須要交付的文檔,一般須要開發人員去手工編寫。編寫完成後,數據庫發生變動又須要手動的進行修改,從而浪費了大量的人力。而且這種文檔並無什麼技術含量,被安排作這個工做的程序員每每本身內心會有抵觸情緒,悲觀的預期本身在團隊的位置,形成離職也是可能的。以下面的這種文檔的內容: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