本文收錄在我的博客:www.chengxy-nds.top,技術資料共享,同進步javascript
最近部門訂單業務調整,收攏其餘業務線的下單入口,作個統一大訂單平臺。須要梳理各業務線的數據表,但每一個業務線庫都有近百張和訂單相關的表,挨個表一個一個字段的弄腦瓜子嗡嗡的。java
爲了避免重複 CV 操做,抱着一絲但願開始在GitHub
裏找,看看有沒有什麼工具能夠用,結果就真的發現了寶藏,screw
(螺絲釘),竟然能夠生成數據庫文檔,優秀啊~。
mysql
引入screw
核心包,HikariCP
數據庫鏈接池,HikariCP
號稱性能最出色的數據庫鏈接池。spring
<!-- screw核心 --> <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>
配置數據源,設置 useInformationSchema
能夠獲取tables
註釋信息。sql
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
screw
有兩種執行方式,第一種是pom
文件配置,另外一種是代碼執行。數據庫
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-maven-plugin</artifactId> <version>1.0.3</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>123456</password> <!--driver--> <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName> <!--jdbc url--> <jdbcUrl>jdbc:mysql://41.92.6.5:3306/fire</jdbcUrl> <!--生成文件類型--> <fileType>HTML</fileType> <!--打開文件輸出目錄--> <openOutputDir>false</openOutputDir> <!--生成模板--> <produceType>freemarker</produceType> <!--文檔名稱 爲空時:將採用[數據庫名稱-描述-版本號]做爲文檔名稱--> <!--<docName>測試文檔名稱</docName>--> <!--描述--> <description>數據庫文檔生成</description> <!--版本--> <version>${project.version}</version> <!--標題--> <title>fire數據庫文檔</title> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
配置完之後在 maven project
->screw
雙擊執行ok。
app
代碼生成方式也很是簡單。maven
@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) // 生成模板實現 .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<String> ignoreTableName = Arrays.asList("a", "test_group"); // 忽略表前綴,如忽略a開頭的數據庫表 List<String> ignorePrefix = Arrays.asList("a", "t"); // 忽略表後綴 List<String> 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(); } }
screw
有 HTML
、DOC
、MD
三種格式的文檔。ide
代碼中的修改spring-boot
.fileType(EngineFileType.HTML)
或者pom
文件
<fileType>MD</fileType>
DOC
文檔樣式HTML
文檔樣式MD
文檔樣式
不得不說這個工具是真TM好用,提早完成任務,有點傲嬌有木有!
原創不易,燃燒秀髮輸出內容,若是有一丟丟收穫,點個贊鼓勵一下吧!
整理了幾百本各種技術電子書,送給小夥伴們。關注公號回覆【666】自行領取。