天天看点

《若依ruoyi》第二十章:代码生成数据库模型详解

作者:源码解析
在实现业务功能的过程中,都会产生很多业务数据。我们将这些业务数据存储在关系数据库中,例如用户注册信息,用户购买的订单信息。常用关系数据库有mysql,oracle等数据库软件,ruoyi使用的数据库是mysql,下面我们针对代码生成模块的数据模型进行解析

1.代码生成数据模型

《若依ruoyi》第二十章:代码生成数据库模型详解

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

《若依ruoyi》第二十章:代码生成数据库模型详解

继续阅读