一、序言
UCode Cms
是一款Maven版的Java原始碼生成器,是快速構建專案的利器。程式碼生成器模組屬於可拆卸模組,即按需引入。程式碼生成器生成SSM(Spring、SpringBoot、MybatisPlus)風格的原始碼。
面試時經常提到物件導向程式設計,實際開發中常常是面向資料庫程式設計,隨著需求的快速變化,資料庫的庫表結構也需要相應變化,如何根據庫表結構的變化,快速響應到原始碼層次,是Java程式碼生成器主要的關切點。
功能亮點
實時讀取庫表結構後設資料資訊,比如表名、欄位名、欄位型別、註釋等,選中修改後的表,點選一鍵生成
,程式碼成即可提現出表結構的變化。
單錶快速轉化restful風格的API介面並對外暴露服務。對於百餘張表的資料庫,使用程式碼生成器讓開發事半功倍。
多表連線查詢。多表連線查詢預設不開啟,需要在全域性檔案中手動配置。開啟後程式碼生成器會自動讀取資料庫後設資料資訊中的主外來鍵關係,分別生成一對一
、一對多
、多對多
風格的原始碼。
生成的程式碼介面可通過Swagger暴露。
二、執行依賴服務
程式碼生成器執行依賴Mysql資料庫、Redis服務,版本不限。
Mysql資料庫
Mysql資料庫中庫表結構分為兩部分,一是系統執行必要的系統表(跟程式碼生成業務無關),二是使用者自定義的庫表,程式碼生成將會讀取。
Redis服務
Redis服務跟程式碼生成業務無關,系統中其它業務用到Redis,因此也依賴Redis服務。
三、快速入門使用
使用demo腳手架[cms demo專案],可直接跳轉到步驟三。腳手架是標準的Spring Web工程,內建少量配置資訊,使用者替換後可快速上手。
# 拉去腳手架,並初始化專案
git clone https://gitee.com/decsa/demo-code.git
1、前提條件
引入如下依賴是使用程式碼生成器功能的前提條件,其中程式碼生成器模組
在程式碼生成完畢後,建議移出。
<!--ucode-cms核心依賴-->
<dependency>
<groupId>xin.altitude.cms</groupId>
<artifactId>ucode-cms-spring-boot-starter</artifactId>
<version>1.3.3</version>
</dependency>
<!--程式碼生成器模組(非必選)-->
<dependency>
<groupId>xin.altitude.cms.code</groupId>
<artifactId>ucode-cms-code-spring-boot-starter</artifactId>
<version>1.3.3</version>
</dependency>
2、全域性配置
環境變數必須繫結為開發環境,程式碼生成器僅在開發模式下生效。打包時即使不移除相關Maven依賴,執行時在非開發環境時,相應程式碼不載入。建議在打包時移除。
spring:
profiles:
active: dev
3、資料庫檔案
資料庫指令碼有兩類:核心SQL和使用者自定義表結構。
sql/
├── cms(必選).sql // 核心指令碼(必選)
匯入系統表後,使用者需自定義業務表,方可體驗程式碼生成的功能。
4、連線資料庫
如果已經配置完資料庫連線,則可忽略此步驟
spring:
datasource:
# 主庫資料來源
url: jdbc:mysql://localhost:3306/ucode-cms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
5、視覺化介面
訪問視覺化介面操作需要生成程式碼的表
6、重啟專案
勾選表結構,點選生成,重啟專案,相應的程式碼生效。訪問地址http://localhost:8080/doc.html
訪問介面列表。
四、高階使用
在完成簡單入門體驗後,需要了解程式碼生成的高階部分,即全域性配置。在專案中搜尋類名CodeProperties
即可檢視所有內建可供修改的引數,在全域性yml
檔案中覆蓋預設值即可完成修改,按需配置。
單表處理
當全域性配置ucode.code.joinQuery = false
或者使用預設配置時,則僅處理單表結構。將表名、欄位名、欄位型別、備註資訊轉化為SSM風格的原始碼。
多表連線
當在全域性配置ucode.code.joinQuery = true
時,則手動開啟主外來鍵查詢,系統會自動讀取表的主外來鍵關係,並將其轉化為連線查詢的原始碼。
主要引數
引數 | 預設值 | 使用備註 |
---|---|---|
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 |
預設開啟二級快取,自定義業務快取可關閉 |