一、模組簡介
1、功能亮點
實時讀取庫表結構後設資料資訊,比如表名、欄位名、欄位型別、註釋等,選中修改後的表,點選一鍵生成
,程式碼成即可提現出表結構的變化。
單錶快速轉化restful風格的API介面並對外暴露服務。對於百餘張表的資料庫,使用程式碼生成器讓開發事半功倍。
多表連線查詢。多表連線查詢預設不開啟,需要在全域性檔案中手動配置。
開啟多表連線查詢後,程式碼生成器會自動讀取資料庫後設資料資訊中的主外來鍵關係
,分別生成一對一
、一對多
、多對多
風格的原始碼。
生成的程式碼介面可通過Swagger暴露。
2、執行依賴服務
程式碼生成器執行依賴Mysql資料庫
,版本不限。
- Mysql資料庫
Mysql資料庫中庫表結構為使用者自定義的庫表,程式碼生成將會讀取。專案SQL指令碼提供5張測試表,方便用於測試使用。
3、程式碼生成器2.0
程式碼生成器升級內容如下:
- 移除Redis服務強依賴
- 移除登陸依賴
- 移除系統SQL指令碼依賴
當前程式碼生成器屬於2.0版本。
二、兩種典型使用場景
(一)克隆Demo專案
使用demo腳手架cms demo專案 ,腳手架是標準的Spring Web工程,稍微修改配置檔案可快速入門上手。
# 拉去腳手架,並初始化專案
git clone https://gitee.com/decsa/demo-code.git
1、修改資料庫連線配置
執行測試SQL指令碼,新增資料庫表結構,開始體驗程式碼生成的功能。
spring:
datasource:
url: jdbc:mysql://localhost:3306/ucode-cms
username: root
password: 123456
2、新增依賴
檢查pom檔案中是否包含程式碼生成器Maven包依賴,如果沒有,則新增如下依賴
<dependency>
<groupId>xin.altitude.cms</groupId>
<artifactId>ucode-cms-code-spring-boot-starter</artifactId>
<version>1.5.6.1</version>
</dependency>
3、視覺化介面
配置完上述連線後,啟動專案。訪問http://localhost:8080
進入控制檯介面。
點選免登入進入程式碼生成器,進入管理介面。
勾選表結構,點選生成,重啟專案,相應的程式碼生效。
4、重啟專案
訪問地址http://localhost:8080/doc.html
訪問介面列表。
(二)獨立建立專案
獨立建立專案支援從零構建程式碼生成器執行環境,既支援嵌入已存在的專案中,也支援新建立的專案。2.0版本重點優化此部分內容。
1、新增依賴
<!--程式碼本地化生成依賴-->
<dependency>
<groupId>xin.altitude.cms</groupId>
<artifactId>ucode-cms-code-spring-boot-starter</artifactId>
<version>1.5.6.1</version>
</dependency>
如果使用程式碼生成器功能,則程式碼本地化生成依賴為必選項。
2、配置資料庫連線
資料庫連線配置對應的資料庫應包含帶生成程式碼的庫表結構。
spring:
datasource:
url: jdbc:mysql://localhost:3306/ucode-cms
username: root
password: 123456
3、啟動專案
啟動專案後,訪問http://localhost:8080
進入程式碼生成器控制檯介面。
選中對應表,點選生成程式碼,在專案中便新添相應的程式碼。
再次重啟專案,訪問http://localhost:8080/doc.html
檢視介面列表。
三、高階使用
在完成簡單入門體驗後,需要了解程式碼生成的高階部分,即全域性配置。在專案中搜尋類名CodeProperties
即可檢視所有內建可供修改的引數,在全域性yml
檔案中覆蓋預設值即可完成修改,按需配置。
1、單表處理
當全域性配置ucode.code.joinQuery = false
或者使用預設配置時,則僅處理單表結構。將表名、欄位名、欄位型別、備註資訊轉化為SSM風格的原始碼。
2、多表連線
當在全域性配置ucode.code.joinQuery = true
時,則手動開啟主外來鍵查詢,系統會自動讀取表的主外來鍵關係,並將其轉化為連線查詢的原始碼。
3、主要引數
引數 | 預設值 | 使用備註 |
---|---|---|
ucode.code.projectDir |
空 | 使用者自定義多模組專案需要指定專案名 |
ucode.code.removeTablePrefix |
false |
根據需要是否在生成程式碼時移除表字首 |
ucode.code.packageName |
xin.altitude.front |
配置使用者自己的包名 |
ucode.code.useLombok |
true |
預設使用Lombok |
ucode.code.filterSysTable |
true |
預設過濾不顯示系統表 |
ucode.code.joinQuery |
false |
是否使用連線查詢(預設單表查詢) |
ucode.code.xml.addXml |
false |
雖然說不建議使用XML檔案編寫SQL,但仍提高可開啟開關 |
ucode.code.mapper.useCache |
true |
預設開啟二級快取,自定義業務快取可關閉 |
四、常見問題
1、找不到依賴?
找不到依賴很大可能是因為阿里雲景象倉庫尚未同步完成Jar包,在專案中pom
檔案新增如下配置:
<repository>
<id>public</id>
<name>maven nexus</name>
<url>https://repo1.maven.org/maven2/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
2、專案打包釋出時如何處理程式碼生成器依賴?
專案打包釋出時建議手動移除程式碼生成器依賴,實際上程式碼生成器的生命週期存在於開發階段。手動不移除對打包不會產生影響,但仍然建議在打包時移除程式碼生成器依賴。
<!--程式碼生成器模組(非必選)-->
<dependency>
<groupId>xin.altitude.cms</groupId>
<artifactId>ucode-cms-code-spring-boot-starter</artifactId>
<version>1.5.6.1</version>
</dependency>
3、多表連線查詢異常
對錶連線查詢是一項複雜的業務,目前支援:一個員工對應一個部門(一對一)、一個部門對應多個員工(一對多)、一名學生可選修多門課程每門課程可被多名學生選修(多對多)。
更高階別的套娃尚不支援。
4、生成後的程式碼能無縫遷移到新專案嗎?
能。生成的程式碼具有高度的遷移屬性,在新專案中匯入預設依賴即可。如果找不到相關依賴,請參考問題一。