一、序言
UCode Cms 是一款Maven版的Java源代碼生成器,是快速構(gòu)建項(xiàng)目的利器。代碼生成器模塊屬于可拆卸模塊,即按需引入。代碼生成器生成SSM(Spring、SpringBoot、MybatisPlus)風(fēng)格的源代碼。
面試時(shí)經(jīng)常提到面向?qū)ο缶幊?,?shí)際開發(fā)中常常是面向數(shù)據(jù)庫編程,隨著需求的快速變化,數(shù)據(jù)庫的庫表結(jié)構(gòu)也需要相應(yīng)變化,如何根據(jù)庫表結(jié)構(gòu)的變化,快速響應(yīng)到源代碼層次,是Java代碼生成器主要的關(guān)切點(diǎn)。
功能亮點(diǎn)
實(shí)時(shí)讀取庫表結(jié)構(gòu)元數(shù)據(jù)信息,比如表名、字段名、字段類型、注釋等,選中修改后的表,點(diǎn)擊一鍵生成,代碼成即可提現(xiàn)出表結(jié)構(gòu)的變化。
單表快速轉(zhuǎn)化restful風(fēng)格的API接口并對外暴露服務(wù)。對于百余張表的數(shù)據(jù)庫,使用代碼生成器讓開發(fā)事半功倍。
多表連接查詢。多表連接查詢默認(rèn)不開啟,需要在全局文件中手動配置。開啟后代碼生成器會自動讀取數(shù)據(jù)庫元數(shù)據(jù)信息中的主外鍵關(guān)系,分別生成一對一、一對多、多對多風(fēng)格的源代碼。
生成的代碼接口可通過Swagger暴露。
二、運(yùn)行依賴服務(wù)
代碼生成器運(yùn)行依賴Mysql數(shù)據(jù)庫、Redis服務(wù),版本不限。
Mysql數(shù)據(jù)庫
Mysql數(shù)據(jù)庫中庫表結(jié)構(gòu)分為兩部分,一是系統(tǒng)運(yùn)行必要的系統(tǒng)表(跟代碼生成業(yè)務(wù)無關(guān)),二是用戶自定義的庫表,代碼生成將會讀取。
Redis服務(wù)
Redis服務(wù)跟代碼生成業(yè)務(wù)無關(guān),系統(tǒng)中其它業(yè)務(wù)用到Redis,因此也依賴Redis服務(wù)。
三、快速入門使用
使用demo腳手架cms demo項(xiàng)目,可直接跳轉(zhuǎn)到步驟三。腳手架是標(biāo)準(zhǔn)的Spring Web工程,內(nèi)置少量配置信息,用戶替換后可快速上手。
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、全局配置
環(huán)境變量必須綁定為開發(fā)環(huán)境,代碼生成器僅在開發(fā)模式下生效。打包時(shí)即使不移除相關(guān)Maven依賴,運(yùn)行時(shí)在非開發(fā)環(huán)境時(shí),相應(yīng)代碼不加載。建議在打包時(shí)移除。
spring:
profiles:
active: dev
3、數(shù)據(jù)庫文件
數(shù)據(jù)庫腳本有兩類:核心SQL和用戶自定義表結(jié)構(gòu)。
sql/
├── cms(必選).sql // 核心腳本(必選)
導(dǎo)入系統(tǒng)表后,用戶需自定義業(yè)務(wù)表,方可體驗(yàn)代碼生成的功能。
4、連接數(shù)據(jù)庫
如果已經(jīng)配置完數(shù)據(jù)庫連接,則可忽略此步驟
spring:
datasource:
# 主庫數(shù)據(jù)源
url: jdbc:mysql://localhost:3306/ucode-cms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
5、可視化界面
訪問可視化界面操作需要生成代碼的表

6、重啟項(xiàng)目
勾選表結(jié)構(gòu),點(diǎn)擊生成,重啟項(xiàng)目,相應(yīng)的代碼生效。訪問地址http://localhost:8080/doc.html訪問接口列表。

四、高級使用
在完成簡單入門體驗(yàn)后,需要了解代碼生成的高級部分,即全局配置。在項(xiàng)目中搜索類名CodeProperties即可查看所有內(nèi)置可供修改的參數(shù),在全局yml文件中覆蓋默認(rèn)值即可完成修改,按需配置。
單表處理
當(dāng)全局配置ucode.code.joinQuery = false或者使用默認(rèn)配置時(shí),則僅處理單表結(jié)構(gòu)。將表名、字段名、字段類型、備注信息轉(zhuǎn)化為SSM風(fēng)格的源代碼。
多表連接
當(dāng)在全局配置ucode.code.joinQuery = true時(shí),則手動開啟主外鍵查詢,系統(tǒng)會自動讀取表的主外鍵關(guān)系,并將其轉(zhuǎn)化為連接查詢的源代碼。
主要參數(shù)
| 參數(shù) | 默認(rèn)值 | 使用備注 |
|---|---|---|
ucode.code.projectDir |
空 | 用戶自定義多模塊項(xiàng)目需要指定項(xiàng)目名 |
ucode.code.removeTablePrefix |
false |
根據(jù)需要是否在生成代碼時(shí)移除表前綴 |
ucode.code.packageName |
xin.altitude.front |
配置用戶自己的包名 |
ucode.code.useLombok |
true |
默認(rèn)使用Lombok |
ucode.code.filterSysTable |
true |
默認(rèn)過濾不顯示系統(tǒng)表 |
ucode.code.joinQuery |
false |
是否使用連接查詢(默認(rèn)單表查詢) |
ucode.code.xml.addXml |
false |
雖然說不建議使用XML文件編寫SQL,但仍提高可開啟開關(guān) |
ucode.code.mapper.useCache |
true |
默認(rèn)開啟二級緩存,自定義業(yè)務(wù)緩存可關(guān)閉 |
補(bǔ)充信息
使用腳手架,快速體驗(yàn)入手代碼生成器
代碼生成器開源項(xiàng)目源碼地址
