1. RuoYi框架代码生成器深度解析
RuoYi框架的代码生成器是其核心功能之一,能够显著提升开发效率。作为一款基于Spring Boot的快速开发框架,RuoYi的代码生成器采用了Velocity模板引擎,实现了从数据库表结构到前后端代码的全自动生成。
1.1 代码生成器架构设计
代码生成器主要分为两大功能模块:
- 表结构管理模块:负责将数据库表结构导入系统并进行管理
- 代码生成模块:根据表结构自动生成前后端代码
这种设计遵循了"配置优于编码"的原则,开发者只需关注业务表的设计,其余重复性工作由框架自动完成。在实际项目中,这种设计可以节省约60%的基础代码编写时间。
1.2 核心数据表设计
RuoYi使用两张核心表来存储代码生成相关的元数据:
sql复制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 '表描述',
`class_name` varchar(100) DEFAULT '' COMMENT '实体类名称',
`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 '生成功能名',
`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=1 DEFAULT CHARSET=utf8 COMMENT='代码生成业务表';
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
