> 本文標題為宣傳噱頭,前提為已啟動項目,數據庫連接正常,未計算其他時間,請勿計較
## 使用后端代碼生成器-共兩步(以下主要演示JPA代碼生成)
> 使用代碼生成器可不運行項目(自動生成表需要啟動項目),這里為啟動項目后生成代碼的演示
### 第一步:輸入實體類名生成代碼
- 在 `cn.exrick.xboot.generator.XbootGenerator` 中輸入你的實體類名后運行主函數即可,當然可修改其他配置信息【若文件已存在,不會覆蓋生成】
<img src="https://ooo.0o0.ooo/2020/02/26/L5fdSJVK8pNjwYD.png" width="500px"/>
- 運行后控制臺提示成功,即可在配置的包路徑下看到生成的代碼文件【若文件不存在自動創建包文件夾及代碼文件,若文件已存在不會覆蓋原文件】
<img src="https://ooo.0o0.ooo/2020/02/26/D4HE6ys93zIvRWx.png" />
- 若生成錯誤可在主函數中啟用刪除方法,重新運行主函數即可刪除剛生成的代碼
<img src="https://ooo.0o0.ooo/2020/02/26/iXsNFC981OAlGxQ.png" width="800px"/>
- 此處文檔的演示已運行項目且已使用JRebel熱更新工具,生成代碼后稍等片刻或手動編譯觸發熱更新,查看相關日志,可以在數據庫中看到Hibernate映射DDL已幫我們建好的表,已包含`XBootBaseEntity`通用字段【表名根據實體類名駝峰法轉換,前綴`t_`可配置】
<img src="https://ooo.0o0.ooo/2020/02/26/QuvOfgAxp6t5j9T.png" width="600px"/>
### 第二步:輸入字段
- 找到剛生成的實體類,根據業務需求輸入需要的字段,`@ApiModelProperty`為swagger接口文檔注釋,還可以使用`@Column`注解做字段標注(詳見下方說明),若不想入庫的字段可以加上`@Transient`注解(詳見下節CRUD文檔)
<img src="https://ooo.0o0.ooo/2020/02/26/i2hqEMYs69pjNcm.png" width="500px"/>
- 稍等片刻熱更新后,我們可以看到數據庫中字段變化【具體表設計請根據實際需求優化修改,建議參考[數據庫設計規范章節文檔](http://www.hmoore.net/exrick/xboot/1022511)】
<img src="https://ooo.0o0.ooo/2020/02/26/DEvCpuPLG9TywHc.png" width="800px"/>
- 到此一個實體類的基本增刪改接口就已經完成了,打開在線接口文檔即可進行測試 http://localhost:8888/doc.html

### 條件構造代碼生成
- 輸入實體類字段后再次運行`XbootGenerator`的主函數【文件存在不會覆蓋】,即可在控制臺看到生成的條件構造分頁獲取代碼,根據需要自行復制覆蓋以下代碼至實現方法ServiceImpl中
- String類型默認使用Like,`like %*%`
- 其余類型默認使用Equal,`==`
<img src=https://ooo.0o0.ooo/2020/02/26/8gowLhfT14CVqzc.png width=800/>
### 樹形結構相關代碼生成
- 常量`isTree`字段設為true后將自動生成樹形結構相關所需添加接口以及默認屬性字段,且含緩存設計
``` java
/**
* 是否生成樹形結構相關接口
* 建議僅需修改
*/
private static final Boolean isTree = false;
```
- 樹形結構可生成接口預覽

### JPA工作流相關代碼生成[【完整版】](http://xpay.exrick.cn/pay?xboot)
- 常量`activiti`字段設為true后將自動生成工作流相關所需添加接口以及字段
``` java
/**
* 是否生成關聯工作流相關接口
* 建議僅需修改
*/
private static final Boolean activiti = false;
```
### @Column注解補充說明
~~~
unique屬性表示該字段是否為唯一標識,默認為false。如果表中有一個字段需要唯一標識,則既可以使用該標記,也可以使用@Table標記中的@UniqueConstraint。
nullable屬性表示該字段是否可以為null值,默認為true。
insertable屬性表示在使用“INSERT”腳本插入數據時,是否需要插入該字段的值。
updatable屬性表示在使用“UPDATE”腳本插入數據時,是否需要更新該字段的值。insertable和updatable屬性一般多用于只讀的屬性,例如主鍵和外鍵等。這些字段的值通常是自動生成的。
columnDefinition屬性表示創建表時,該字段創建的SQL語句,一般用于通過Entity生成表定義時使用。
table屬性表示當映射多個表時,指定表的表中的字段。默認值為主表的表名。有關多個表的映射將在本章的5.6小節中詳細講述。
length屬性表示字段的長度,當字段的類型為varchar時,該屬性才有效,默認為255個字符。
precision屬性和scale屬性表示精度,當字段類型為double時,precision表示數值的總長度,scale表示小數點所占的位數。
~~~
## 新增Mybatis-Plus后端代碼生成器
- 找到 `cn.exrick.xboot.generator.XbootMPGenerator`工具類,使用步驟同上,可自動生成相應`mapper.xml`空白文件至`resources/mapper`中
<img src="https://ooo.0o0.ooo/2019/04/11/5caf233d0ad6b.png" width="600px"/>
- Mybatis-Plus生成器可生成接口預覽
<img src="https://ooo.0o0.ooo/2019/04/11/5caf5c87bd0c1.png" />
- 注意若修改dao對應包路徑出錯后,需到`MybatisPlusConfig`配置添加你的mapper路徑掃描
``` java
/**
* dao對應包 【注意修改后需到cn.exrick.xboot.config.mybatisplus.MybatisPlusConfig配置你的mapper路徑掃描】
* (文件自動生成至該包下)
*/
private static final String daoPackage = "cn.exrick.xboot.modules.your.mapper";
```
### 已支持樹形結構相關代碼生成
- 常量`isTree`字段設為true后將自動生成樹形結構相關所需添加接口以及默認屬性字段,且含緩存設計
``` java
/**
* 是否生成樹形結構相關接口
* 建議僅需修改
*/
private static final Boolean isTree = false;
```
### 條件構造代碼生成
- 輸入實體類字段后再次運行`XbootMPGenerator`的主函數【文件存在不會覆蓋】,即可在控制臺看到生成的條件構造分頁獲取代碼,根據需要自行復制添加以下代碼至控制層方法Controller中
- String類型默認使用Like,`like %*%`
- 其余類型默認使用Equal,`==`
<img src=https://ooo.0o0.ooo/2020/02/26/StIfUdFyvEcDCa6.png width=800/>
- 前言&版本說明
- 概念
- XBoot 是什么?
- 系統架構
- 主要使用的開源組件
- 角色控制訪問權限(RBAC)
- 用戶手冊
- 系統配置
- 工作流使用配置
- 定時任務調度
- 智能助手客服機器人
- 項目本地運行
- 后端運行
- 前端運行
- 項目結構說明
- 附:使用Oracle等數據庫
- 模塊化版本
- 后端開發指南
- 基本開發指南
- 前后端數據交互標準
- 工具類及數據權限
- 代碼生成器-30秒搞定CRUD
- 增刪改查CRUD
- 日志類型注解擴展
- 邏輯刪除
- 各驗證碼使用及配置
- 接口文檔使用及認證
- 前端開發指南
- 基本開發指南
- 主題/Logo/首頁等配置
- 路由菜單配置
- 多語言國際化配置
- 自定義圖標icon
- 工具類及數據獲取
- 其他說明
- 完整版開發指南
- 前端Vue代碼生成器
- Activiti工作流
- 單點登錄配置
- 智能助手/客服機器人
- MinIO對象存儲服務搭建
- 第三方社交賬號配置
- 短信開發/站內消息/郵件
- Vaptcha驗證碼
- 禁用詞使用
- 前端移除CDN
- 其他說明
- 開放平臺及單點登錄
- 開放平臺使用指南
- Web接入開發流程
- 單點登錄開發指南
- 微信小程序端開發指南
- 項目導入與開發必讀
- 業務組件
- 產品組件(小)
- 產品組件(大)
- 優惠券組件
- 評論列表組件
- 紅包組件
- 推薦商品組件
- 頁面設計
- 商品詳情頁及SKU設計
- 通用方法工具類說明
- 開發經驗與踩坑分享
- Uniapp端開發指南
- APP后端開發指南
- Uniapp前端開發指南
- 開發新功能示例
- 后端開發新模塊
- 前端開發新頁面
- 測試
- SonarQube代碼質量管理
- TestNG單元測試
- ExtentReports測試報告
- Selenuim自動化Web測試
- Appuim自動化App測試
- JMeter壓測性能測試
- 部署
- Spring Boot配置
- 快速部署
- 后端部署
- 前端部署
- 前端部署優化
- Docker容器化部署
- 服務器配置
- 持續集成
- GitLab
- GitLab CI
- XBoot 腳本參考
- Jenkins
- Jenkins安裝
- XBoot CI參考
- DevOps環境搭建
- 組件安裝列表
- 開發設計規范
- 分支管理
- 數據庫設計規范
- Redis使用規范
- Java基礎開發規范
- Rest API規范
- 項目結構規范
- 前端開發規范
- 前端設計規范
- 項目搭建分享
- 后端相關
- SpringBoot 2.x區別總結
- Spring Security整合JWT
- Spring Security動態權限管理
- Spring Boot 2.x整合Quartz
- Spring Boot 2.x整合Websocket
- Spring Boot 2.x整合Activiti工作流以及模型設計器
- Spring Boot + Security全局跨域配置
- 前端相關
- axios請求封裝 統一異常處理
- 動態路由菜單加載
- 多維度控制權限至按鈕顯示
- 發送消息圖標紅點實時顯示
- 動態組件單頁操作
- XBoot助你【告別996】
- 業務開發踩坑
- 你會用開發神器IDEA嗎
- Lombok你知道多少
- 你還在手動校驗參數嗎
- 你真的會用JPA嗎
- Lamda表達式
- Stream流式API
- 告別資源關閉
- Optional避免null
- 谷歌Guava工具包
- 線程池
- 其他小經驗技巧
- 更新日志及步驟
- 常見問題