本文收錄在個人部落格:www.chengxy-nds.top,技術資料共享,同進步
最近部門訂單業務調整,收攏其他業務線的下單入口,做個統一大訂單平臺。需要梳理各業務線的資料表,但每個業務線庫都有近百張和訂單相關的表,挨個表一個一個欄位的弄腦瓜子嗡嗡的。
為了不重複 CV 操作,抱著一絲希望開始在GitHub
裡找,看看有沒有什麼工具可以用,結果就真的發現了寶藏,screw
(螺絲釘),居然可以生成資料庫文件,優秀啊~。
一、資料庫支援
- [x] MySQL
- [x] MariaDB
- [x] TIDB
- [x] Oracle
- [x] SqlServer
- [x] PostgreSQL
- [x] Cache DB
二、配置
1、pom檔案
引入screw
核心包,HikariCP
資料庫連線池,HikariCP
號稱效能最出色的資料庫連線池。
<!-- 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>
2、配置資料來源
配置資料來源,設定 useInformationSchema
可以獲取tables
註釋資訊。
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
3、screw 核心配置
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。
程式碼生成方式也非常簡單。
@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();
}
}
4、文件格式
screw
有 HTML
、DOC
、MD
三種格式的文件。
程式碼中的修改
.fileType(EngineFileType.HTML)
或者pom
檔案
<fileType>MD</fileType>
DOC
文件樣式
HTML
文件樣式
MD
文件樣式
不得不說這個工具是真TM好用,提前完成任務,有點傲嬌有木有!
原創不易,燃燒秀髮輸出內容,如果有一丟丟收穫,點個贊鼓勵一下吧!
整理了幾百本各類技術電子書,送給小夥伴們。關注公號回覆【666】自行領取。和一些小夥伴們建了一個技術交流群,一起探討技術、分享技術資料,旨在共同學習進步,如果感興趣就加入我們吧!