GUI代碼生成器
===
**目錄索引:**
- 建表
- 代碼生成
- 配置掃描路徑
- 功能測試
- 代碼生成器使用規則
- 一對多的代碼生成
# GUI代碼生成器用法
本章通過一個實際的示例來講解JEECG代碼生成器的使用
## 1.建表
現在有一張員工表person,其建表SQL為:
```
CREATE TABLE `person` (
`ID` varchar(32) NOT NULL default '' COMMENT '主鍵',
`NAME` varchar(32) default NULL COMMENT '用戶名',
`AGE` int(11) default NULL COMMENT '年齡',
`SALARY` decimal(10,2) default NULL COMMENT '工資',
`createDt` datetime default NULL COMMENT '創建時間',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
注意:建表時,必須給每個字段加上注釋,代碼生成器會根據注釋去生成頁面字段對應的顯示文本。
## 2.代碼生成
運行“src/main/java/test/JeecgOneGUI.java”文件,打開代碼生成器并輸入相應的參數如圖4-1所示。

圖4-1員工信息維護的代碼生成器
執行【生成】之后,可以在源代碼目錄src中看到新生成的java代碼文件,如圖4-2所示。

圖4-2生成的java文件
同樣地,可以在WebRoot/webpage中看到新生成的jsp頁面,如圖4-3所示。

圖4-3生成的JSP文件
```
生成代碼結構說明
1.添加和修改頁面在一個JSP頁面中
2.service層接口和實現都繼承父類
```
## 3.配置掃描路徑
用代碼生成器生成代碼后,需要進行相關配置配置,掃描注入control、service、entity等;
詳細操作步驟如下:
a.control掃描配置,在spring-mvc.xml文件里面

b.Service掃描路徑配置, spring-mvc-hibernate.xml

c.實體Entity掃描路徑配置, spring-mvc-hibernate.xml

## 4.功能測試
#### ①.添加菜單并授權
重新啟動Tomcat,進入系統主界面->系統管理->菜單管理,點擊菜單錄入,添加員工管理菜單,如圖4-4所示。
菜單地址內容為:類映射名.do?方法名,如personController.do?person

圖4-4員工管理的菜單添加
菜單添加完成之后,需要將該菜單分配給管理員角色,重新登錄系統后,可以在系統管理模塊下看到子菜單【員工管理】,如圖4-5所示。

圖4-5新增的員工管理菜單項
#### ②.功能測試
點擊菜單項【員工管理】,打開員工管理的主界面如圖4-6所示。

圖4-6員工管理主界面
點擊【錄入】按鈕,在彈出的對話框中錄入員工基本信息,如圖4-7所示。

圖4-7員工信息錄入
點擊確定按鈕,對信息進行保存,此時可以在用戶列表中看到新錄入的信息,同時在數據庫中也可以看到數據被保存入庫,如圖4-8所示。

圖4-8信息被正確保存入庫
## 5.代碼生成器使用規則
#### ①.建表規范
* 表必須有唯一主鍵: ID(字符類型 32位)
備注: 主鍵采用UUID方式生成
主鍵支持自定義,修改jeecg_config.properties的參數[jeecg_generate_table_id]即可;
* 如需使用框架自動生成表創建人,創建時間等,必須字段參見“表4 2建表模板”
* 表字段必須有注釋
備注: JSP頁面字段文本,是根據表字段注釋來生成
注:請按照建表模板表4 來創建新表,模板表中原有的字段,生成器會過濾不在頁面生成。
表4-9建表模板
| 字段名| 類型| 長度| 備注| 主鍵|
| ---| ---| ---| ---| ---|
| ID| varchar| 36| 主鍵| TURE|
| CREATE_BY| varchar| 36| 創建人| |
| CREATE_NAME| varchar| 32| 創建人名字| |
| CREATE_DATE| datetime| 0| 創建時間| |
| UPDATE_BY| varchar| 36| 修改人| |
| UPDATE_NAME| varchar| 32| 修改人名字| |
| UPDATE_DATE| datetime| 0| 修改時間| |
| DELFLAG| int| 2| 刪除標記| |
| DEL_DATE| datetime| 0| 刪除時間| | |
#### ②.頁面生成規則
說明:JSP頁面字段的文本內容,取表字段的注釋前6位字符(如果建表字段注釋為空,則頁面字段文本會為空)
* 默認生成的JSP頁面前五個字段為必須項,其他字段為非必須輸入(需要自己手工加)
* 數據庫字段類型為:datetime -->對應頁面字段,會自動追加[年月日-時分秒]時間控件
* 數據庫字段類型為:date -->對應頁面會字段,自動追加[年月日]時間控件
* 數據庫字段類型為:Int/Number-->對應頁面字段,會自動追加數字校驗(不允許輸入小數)
* 數據庫字段類型為:float/double/decimal-->對應頁面頁面字段,會自動追加數字校驗(允許輸入小數)
* 如果表字段為字符類型,并且設置了長度,頁面輸入框會自動設置maxlength對應表字段長度
## 6.一對多的代碼生成
#### ①.一對多代碼生成器使用
單表的代碼生成器入口類是test.JeecgOneGUI;
一對多的代碼生成器入口類是test.JeecgOneToMainUtil;
一對多的代碼生成器使用示例:
```
//第一步:設置主表
CodeParamEntity codeParamEntityIn = new CodeParamEntity();
codeParamEntityIn.setTableName("jeecg_order_main");//主表[表名]
codeParamEntityIn.setEntityName("Demo4ManyKey"); //主表[實體名]
codeParamEntityIn.setEntityPackage("jeecg"); //主表[包名]
codeParamEntityIn.setFtlDescription("訂單主數據"); //主表[描述]
//第二步:設置子表集合
List<SubTableEntity> subTabParamIn = new ArrayList<SubTableEntity>();
//[1].子表一
SubTableEntity po = new SubTableEntity();
po.setTableName("jeecg_order_custom");//子表[表名]
po.setEntityName("DemoMany4CustomKey");//子表[實體名]
po.setEntityPackage("jeecg"); //子表[包]
po.setFtlDescription("訂單客戶明細"); //子表[描述]
po.setForeignKeys(new String[]{"GORDER_ID","GO_ORDER_CODE"});//子表[外鍵:與主表關聯外鍵]
subTabParamIn.add(po);
//[2].子表二
SubTableEntity po2 = new SubTableEntity();
po2.setTableName("jeecg_order_product"); //子表[表名]
po2.setEntityName("DemoMany4ProductKey"); //子表[實體名]
po2.setEntityPackage("jeecg"); //子表[包]
po2.setFtlDescription("訂單產品明細"); //子表[描述]
po2.setForeignKeys(new String[]{"GORDER_ID","GO_ORDER_CODE"});//子表[外鍵:與主表關聯外鍵]
subTabParamIn.add(po2);
codeParamEntityIn.setSubTabParam(subTabParamIn);
//第三步:一對多(父子表)數據模型,代碼生成
CodeGenerateOneToMany.oneToManyCreate(subTabParamIn, codeParamEntityIn);
```
#### ②.使用規范
1.目前代碼生成器默認的主鍵生成策略為UUID
2.主表和子表的目錄最好保持一致
3.子表和主表的外鍵規則如下:
a)主表和子表的外鍵字段名字,必須相同(除主鍵ID外)
b)子表引用主表主鍵ID作為外鍵,外鍵字段必須以_ID結尾
- 總體介紹
- 快速了解
- 平臺優勢
- 技術支持
- 社區榮譽
- 開發環境準備
- JEECG私服Maven
- 代碼結構說明
- 入門開發環境搭建
- 開發工具
- 代碼生成器使用
- GUI代碼生成器
- Online代碼生成器
- P3插件代碼生成器
- 代碼生成器配置
- 功能介紹
- 權限開發手冊
- Online開發權限
- Online表單訪問規則
- 列表按鈕權限控制
- 列表數據權限控制
- 頁面表單權限控制(一對多表)
- 頁面表單權限控制(單表)
- 其他
- 二級管理員手冊
- 接口權限配置
- 平臺權限設計總覽
- 編碼開發方式
- 列表按鈕權限用法
- 列表數據權限用法
- 數據權限自定義SQL
- 表單權限用法
- UI標簽庫文檔
- AuthFilter(頁面權限標簽)
- Autocomplete(自動補全標簽)
- BaseTag(樣式和JS引入標簽)
- Choose(彈出選擇標簽)
- ComboTree(下拉樹形選擇框)
- Datagrid(數據列表標簽)
- DepartSelectTag(部門樹選擇標簽)
- DictSelect(數據字典下拉選擇框)
- FormValidation(表單提交及驗證標簽)
- HasPermissionTag(頁面權限標簽)
- Menu(左側菜單生成標簽)
- MutiLang(國際化標簽)
- OrgSelectTag(部門樹列表選擇標簽)
- SelectZTree(Ztree樹控件)
- Tabs(選項卡父標簽)
- TreeSelectTag樹分類標簽
- Upload(上傳標簽)
- UserSelectTag(用戶選擇標簽)
- WebUploader(上傳標簽)
- 查詢構造器
- 查詢過濾器
- 高級查詢構造器
- 專題功能介紹
- 國際化使用
- 多數據源使用
- 定時任務
- 平臺JWT接口文檔
- 消息中心
- Online在線開發
- Online二次開發
- Online代碼生成
- Online唯一性校驗配置
- Online查詢機制(數據權限)
- Online樹形表單配置
- Online表單填值規則
- Online表單對外接口
- Online表單控件
- Online表單配置
- Online表單高級應用
- Online報表開發
- Online圖形報表配置
- Online數據報表配置
- Online移動報表配置
- 自定義表單設計
- 自定義表單權限
- 列表空間權限控制
- 功能介紹
- 常規控件權限控制
- 自定義表單配置
- 自定義表單二次開發
- 自定義表單控件
- 自定義表單數據源
- 自定義表單模板
- 自定義表單配置
- 自定義表單高級應用
- 表單數據維護
- 附錄小技巧
- datagrid擴展屬性用法
- Formvalid新增屬性tiptype的使用
- JEECG單點集成文檔
- Jeecg定時任務開發
- JEECG常見問題貼
- Redis與Ehcache切換文檔
- Toolbar自定義js參數規則
- UI標簽規則
- 列表多表頭的設計
- 列表拓展字段展示
- 列表自定義查詢條件
- 員工入職開發規范文檔V1.0
- 數據列表合計功能
- 登錄權限攔截器排除方法
- 組織機構導入功能使用說明
- 表單字段重復校驗方法
- JEECG新技術
- 新版UI技術方案