基於MybatisPlus程式碼生成器(2.0新版本)

2022-06-16 12:03:45

一、模組簡介

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、生成後的程式碼能無縫遷移到新專案嗎?

能。生成的程式碼具有高度的遷移屬性,在新專案中匯入預設依賴即可。如果找不到相關依賴,請參考問題一。