代码生成功能
# 代码生成功能
在企业级开发中,重复性的代码往往占据了大量的开发时间和精力。通过代码生成工具,开发者可以快速生成常见的增删改查代码,提高开发效率,减少重复劳动。若依框架提供了强大的代码生成工具,支持单表、树表、主子表等多种表结构的代码生成,并可根据实际需求进行自定义配置。本文将详细介绍如何使用若依框架的代码生成功能,以及相关的配置与使用技巧。
# 一、默认配置
若依框架提供了默认的代码生成配置文件,单应用配置在 resources
目录下的 application.yml
,多模块配置在 ruoyi-generator
模块的 resources
目录下的 generator.yml
中。开发者可以根据项目需求自行调整这些配置。
# 代码生成配置
gen:
# 开发者姓名,生成到类注释上
author: ruoyi
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
packageName: com.ruoyi.system
# 自动去除表前缀,默认是 false
autoRemovePre: false
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
tablePrefix: sys_
2
3
4
5
6
7
8
9
10
# 二、代码生成支持的表结构
若依框架支持对多种表结构的代码生成,以下是常见的表结构及其对应的 SQL 语句。
# 1. 单表结构
单表结构是最常见的数据表结构,适用于简单的增删改查操作。以下是一个学生信息表的 SQL 创建语句。
DROP TABLE IF EXISTS sys_student;
CREATE TABLE sys_student (
student_id INT(11) AUTO_INCREMENT COMMENT '编号',
student_name VARCHAR(30) DEFAULT '' COMMENT '学生名称',
student_age INT(3) DEFAULT NULL COMMENT '年龄',
student_hobby VARCHAR(30) DEFAULT '' COMMENT '爱好(0代码 1音乐 2电影)',
student_sex CHAR(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)',
student_status CHAR(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
student_birthday DATETIME COMMENT '生日',
PRIMARY KEY (student_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 COMMENT = '学生信息表';
2
3
4
5
6
7
8
9
10
11
# 2. 树表结构
树表结构适用于具有层级关系的数据表,例如分类、部门等。以下是一个产品表的 SQL 创建语句。
DROP TABLE IF EXISTS sys_product;
CREATE TABLE sys_product (
product_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '产品ID',
parent_id BIGINT(20) DEFAULT 0 COMMENT '父产品ID',
product_name VARCHAR(30) DEFAULT '' COMMENT '产品名称',
order_num INT(4) DEFAULT 0 COMMENT '显示顺序',
status CHAR(1) DEFAULT '0' COMMENT '产品状态(0正常 1停用)',
PRIMARY KEY (product_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 COMMENT = '产品表';
2
3
4
5
6
7
8
9
# 3. 主子表结构
主子表结构适用于一对多关系的数据表,例如客户和订单、订单和商品等。以下是客户表和商品表的 SQL 创建语句。
-- 客户表
DROP TABLE IF EXISTS sys_customer;
CREATE TABLE sys_customer (
customer_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '客户ID',
customer_name VARCHAR(30) DEFAULT '' COMMENT '客户姓名',
phonenumber VARCHAR(11) DEFAULT '' COMMENT '手机号码',
sex VARCHAR(20) DEFAULT NULL COMMENT '客户性别',
birthday DATETIME COMMENT '客户生日',
remark VARCHAR(500) DEFAULT NULL COMMENT '客户描述',
PRIMARY KEY (customer_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 COMMENT = '客户表';
-- 商品表
DROP TABLE IF EXISTS sys_goods;
CREATE TABLE sys_goods (
goods_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '商品ID',
customer_id BIGINT(20) NOT NULL COMMENT '客户ID',
name VARCHAR(30) DEFAULT '' COMMENT '商品名称',
weight INT(5) DEFAULT NULL COMMENT '商品重量',
price DECIMAL(6,2) DEFAULT NULL COMMENT '商品价格',
date DATETIME COMMENT '商品时间',
type CHAR(1) DEFAULT NULL COMMENT '商品种类',
PRIMARY KEY (goods_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 COMMENT = '商品表';
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 三、代码生成使用流程
# 1. 登录系统并导入对应表
通过系统工具模块的代码生成页面,选择并导入对应的数据表。导入后,系统将自动识别表结构,并生成相应的代码。
# 2. 生成代码
在代码生成列表中,找到需要生成代码的表。点击生成按钮,系统将生成一个包含所有相关代码的压缩包(ruoyi.zip
)。将压缩包解压后,根据包内目录结构将代码复制到相应的项目目录中。
# 3. 预览、同步与修改
若依框架的代码生成工具支持预览、同步和修改功能,开发者可以根据需求对生成的代码进行调整。
- 预览: 对生成的代码进行预览,确保代码符合预期。
- 同步: 如果原表的结构发生变化,可以通过同步功能更新生成代码。
- 修改: 允许开发者修改生成代码的基本信息、字段信息和生成配置,以满足个性化需求。
# 四、自定义业务逻辑与扩展
# 1. 自定义操作类型
在某些业务场景下,可能需要定义新的操作类型。在 BusinessType
枚举中,可以添加新的操作类型。例如,添加一个 "测试" 类型:
public enum BusinessType
{
// 其他操作类型
TEST // 自定义测试操作类型
}
2
3
4
5
并在 sys_dict_data
表中初始化操作类型数据:
INSERT INTO sys_dict_data
VALUES (25, 10, '测试', '10', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '测试操作');
2
在 Controller 中使用自定义操作类型:
@Log(title = "测试标题", businessType = BusinessType.TEST)
public AjaxResult test(...)
{
return success(...);
}
2
3
4
5
# 2. 自定义代码生成模板
若依框架的代码生成器使用了 Freemarker 作为模板引擎,开发者可以根据实际需求自定义代码生成模板,生成更符合项目需求的代码。自定义模板可以放置在 ruoyi-generator
模块的 resources/ftl
目录下。
# 五、总结
通过使用若依框架的代码生成工具,开发者可以显著提高开发效率,减少重复代码的编写。同时,通过自定义配置和模板,可以生成更加符合项目需求的代码。若依框架的代码生成工具不仅支持常见的增删改查功能,还支持复杂的业务逻辑扩展,满足了企业级项目的多样化需求。
- 默认配置: 可以通过
application.yml
或generator.yml
配置代码生成的默认行为。 - 支持多种表结构: 无论是单表、树表还是主子表,若依框架都能提供高效的代码生成支持。
- 丰富的自定义选项: 开发者可以根据业务需求自定义操作类型、代码生成模板,甚至直接修改生成的代码。
- 操作便捷: 通过系统工具页面,开发者可以轻松进行代码生成、预览、同步和修改。