在企業級開發中、咱們常常會有編寫數據庫表結構文檔的時間付出,從業以來,待過幾家企業,關於數據庫表結構文檔狀態:要麼沒有、要麼有、但都是手寫、後期運維開發,須要手動進行維護到文檔中,非常繁瑣、若是忘記一次維護、就會給之後工做形成不少困擾、無形中製造了不少坑留給本身和後人,因而須要一個插件工具 screw[1]來維護。java
[✔️] MySQL
[✔️] MariaDB
[✔️] TIDB
[✔️] Oracle
[✔️] SqlServer
[✔️] PostgreSQL
[✔️] Cache DBmysql
這裏以 mysql8 數據庫爲例子git
<!--數據庫文檔核心依賴--> <dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</artifactId> <version>1.0.3</version> </dependency> <!-- HikariCP --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4.5</version> </dependency> <!--mysql driver--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.20</version> </dependency> 複製代碼
@Test
public void shouldAnswerWithTrue() { //數據源 HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver"); hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test"); hikariConfig.setUsername("root"); hikariConfig.setPassword("root"); //設置能夠獲取tables remarks信息 hikariConfig.addDataSourceProperty("useInformationSchema", "true"); hikariConfig.setMinimumIdle(2); hikariConfig.setMaximumPoolSize(5); DataSource dataSource = new HikariDataSource(hikariConfig); //生成配置 EngineConfig engineConfig = EngineConfig.builder() //生成文件路徑 .fileOutputDir("/Users/lengleng") //打開目錄 .openOutputDir(true) //文件類型 .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() //忽略表名 .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(); } 複製代碼
<build>
<plugins> <plugin> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-maven-plugin</artifactId> <version>1.0.2</version> <dependencies> <!-- HikariCP --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4.5</version> </dependency> <!--mysql driver--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.20</version> </dependency> </dependencies> <configuration> <!--username--> <username>root</username> <!--password--> <password>root</password> <!--driver--> <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName> <!--jdbc url--> <jdbcUrl>jdbc:mysql://127.0.0.1:3306/test</jdbcUrl> <!--生成文件類型--> <fileType>HTML</fileType> <!--文件輸出目錄--> <fileOutputDir>/Users/lengleng</fileOutputDir> <!--打開文件輸出目錄--> <openOutputDir>false</openOutputDir> <!--生成模板--> <produceType>freemarker</produceType> <!--描述--> <description>數據庫文檔生成</description> <!--版本--> <version>${project.version}</version> <!--標題--> <title>數據庫文檔</title> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> 複製代碼
screw: https://gitee.com/leshalv/screwweb