在實作業務功能的過程中,都會産生很多業務資料。我們将這些業務資料存儲在關系資料庫中,例如使用者注冊資訊,使用者購買的訂單資訊。常用關系資料庫有mysql,oracle等資料庫軟體,ruoyi使用的資料庫是mysql,下面我們針對代碼生成子產品的資料模型進行解析
1.代碼生成資料模型
gen_table:ruoyi生成代碼的規則是根據業務資料表為準,生成單表的增删改查,樹表或者多表關聯,如下是表結構
CREATE TABLE `gen_table` (
`table_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '編号',
`table_name` varchar(200) DEFAULT '' COMMENT '表名稱',
`table_comment` varchar(500) DEFAULT '' COMMENT '表描述',
`sub_table_name` varchar(64) DEFAULT NULL COMMENT '關聯子表的表名',
`sub_table_fk_name` varchar(64) DEFAULT NULL COMMENT '子表關聯的外鍵名',
`class_name` varchar(100) DEFAULT '' COMMENT '實體類名稱',
`tpl_category` varchar(200) DEFAULT 'crud' COMMENT '使用的模闆(crud單表操作 tree樹表操作)',
`package_name` varchar(100) DEFAULT NULL COMMENT '生成包路徑',
`module_name` varchar(30) DEFAULT NULL COMMENT '生成子產品名',
`business_name` varchar(30) DEFAULT NULL COMMENT '生成業務名',
`function_name` varchar(50) DEFAULT NULL COMMENT '生成功能名',
`function_author` varchar(50) DEFAULT NULL COMMENT '生成功能作者',
`gen_type` char(1) DEFAULT '0' COMMENT '生成代碼方式(0zip壓縮包 1自定義路徑)',
`gen_path` varchar(200) DEFAULT '/' COMMENT '生成路徑(不填預設項目路徑)',
`options` varchar(1000) DEFAULT NULL COMMENT '其它生成選項',
`create_by` varchar(64) DEFAULT '' COMMENT '建立者',
`create_time` datetime DEFAULT NULL COMMENT '建立時間',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新時間',
`remark` varchar(500) DEFAULT NULL COMMENT '備注',
PRIMARY KEY (`table_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='代碼生成業務表';
gen_table跟gen_table_column是一對多的關系,gen_table_column記錄表(需要生成代碼)的所有字段,代碼生成的頁面包含清單頁面,編輯頁面。
gen_table_column定義了每個字段在清單上面怎麼顯示,編輯頁面是否顯示或者可以修改。
可以定義每個字典的顯示格式,也可以定義每個字典的編輯格式。格式包含下拉框,多選框,字典值,時間選擇等格式。也可以自己編寫代碼做為字段格式函數。
CREATE TABLE `gen_table_column` (
`column_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '編号',
`table_id` varchar(64) DEFAULT NULL COMMENT '歸屬表編号',
`column_name` varchar(200) DEFAULT NULL COMMENT '列名稱',
`column_comment` varchar(500) DEFAULT NULL COMMENT '列描述',
`column_type` varchar(100) DEFAULT NULL COMMENT '列類型',
`java_type` varchar(500) DEFAULT NULL COMMENT 'JAVA類型',
`java_field` varchar(200) DEFAULT NULL COMMENT 'JAVA字段名',
`is_pk` char(1) DEFAULT NULL COMMENT '是否主鍵(1是)',
`is_increment` char(1) DEFAULT NULL COMMENT '是否自增(1是)',
`is_required` char(1) DEFAULT NULL COMMENT '是否必填(1是)',
`is_insert` char(1) DEFAULT NULL COMMENT '是否為插入字段(1是)',
`is_edit` char(1) DEFAULT NULL COMMENT '是否編輯字段(1是)',
`is_list` char(1) DEFAULT NULL COMMENT '是否清單字段(1是)',
`is_query` char(1) DEFAULT NULL COMMENT '是否查詢字段(1是)',
`query_type` varchar(200) DEFAULT 'EQ' COMMENT '查詢方式(等于、不等于、大于、小于、範圍)',
`html_type` varchar(200) DEFAULT NULL COMMENT '顯示類型(文本框、文本域、下拉框、複選框、單選框、日期控件)',
`dict_type` varchar(200) DEFAULT '' COMMENT '字典類型',
`sort` int(11) DEFAULT NULL COMMENT '排序',
`create_by` varchar(64) DEFAULT '' COMMENT '建立者',
`create_time` datetime DEFAULT NULL COMMENT '建立時間',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新時間',
PRIMARY KEY (`column_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='代碼生成業務表字段';
2.java實體類對資料庫的映射關系
gen_table對應java實體對象是GenTable,具體的路徑package com.ruoyi.generator.domain;
gen_table_column對應java實體對象是GenTableColumn,具體的路徑package com.ruoyi.generator.domain;
如下圖,資料庫的字段通過駝峰法轉換成java實體對象字段
小駝峰法:
除第一個單詞之外,其他單詞首字母均大寫,如addAdmin,常用語變量。資料庫字典下劃線轉換成為大寫字母。
例如:column_id字典轉換成為:columnId