5分钟极速开发:用若依代码生成器构建商品管理系统实战
在中小企业的实际开发场景中,商品管理模块几乎是每个电商类项目的标配。传统开发模式下,我们需要手动编写Controller、Service、Mapper层的基础CRUD代码,再逐个调试前端页面组件——这个过程往往要消耗大半天时间。而今天要介绍的若依(RuoYi-Vue)框架代码生成器,能将这个流程压缩到5分钟以内。
1. 环境准备与框架启动
1.1 基础环境配置
开始前请确保已安装以下组件:
- Java 8+:推荐JDK11
- MySQL 5.7+:若依默认使用MySQL语法
- Maven 3.6+:用于后端依赖管理
- Node.js 12+:前端Vue项目构建
- Redis 5+:用于会话管理和缓存
提示:建议使用Docker快速部署MySQL和Redis服务,避免环境配置问题
1.2 项目初始化步骤
克隆项目仓库:
git clone https://gitee.com/y_project/RuoYi-Vue.git导入SQL文件:
-- 执行项目sql目录下的quartz.sql和ry_20230223.sql source /path/to/RuoYi-Vue/sql/ry_20230223.sql修改配置文件:
# ruoyi-admin/src/main/resources/application.yml spring: datasource: url: jdbc:mysql://localhost:3306/ry?useSSL=false username: root password: yourpassword redis: host: localhost port: 6379启动后端服务:
mvn spring-boot:run启动前端服务:
cd ruoyi-ui npm install && npm run dev
访问http://localhost:80即可看到若依的登录界面(默认账号admin/123456)。
2. 数据库表设计与导入
2.1 商品表结构设计
我们以电商场景常见的商品表为例:
CREATE TABLE `goods` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '商品ID', `name` varchar(100) NOT NULL COMMENT '商品名称', `category_id` bigint DEFAULT NULL COMMENT '分类ID', `price` decimal(10,2) DEFAULT '0.00' COMMENT '售价', `cost_price` decimal(10,2) DEFAULT NULL COMMENT '成本价', `stock` int DEFAULT '0' COMMENT '库存', `cover_image` varchar(255) DEFAULT NULL COMMENT '封面图', `status` char(1) DEFAULT '0' COMMENT '状态(0下架 1上架)', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';2.2 导入表到代码生成器
- 登录系统后进入"系统工具"→"代码生成"
- 点击"导入"按钮,选择刚才创建的goods表
- 在生成配置页面设置以下关键参数:
| 配置项 | 建议值 | 说明 |
|---|---|---|
| 生成模块名 | goods | 对应业务模块名称 |
| 作者 | 你的名字 | 生成的代码注释作者 |
| 包路径 | com.ruoyi.goods | Java包结构 |
| 前端路径 | goods | Vue组件存放目录 |
3. 代码生成与配置
3.1 生成器核心配置技巧
在生成代码前,有几个关键配置需要注意:
- 字段校验规则:为价格类字段添加
@DecimalMin校验 - 字典类型映射:将status字段关联到系统字典
- 主子表关联:如需关联商品SKU表,可在此配置
// 自动生成的实体类示例片段 public class Goods extends BaseEntity { @Excel(name = "商品名称") @NotBlank(message = "商品名称不能为空") private String name; @Excel(name = "售价") @DecimalMin(value = "0.01", message = "售价必须大于0") private BigDecimal price; @Excel(name = "状态", readConverterExp = "0=下架,1=上架") private String status; }3.2 一键生成操作流程
- 点击"生成代码"按钮下载zip包
- 解压后将文件分别放置到对应目录:
- 后端代码:复制到
ruoyi-admin模块 - 前端代码:复制到
ruoyi-ui/src/views/goods
- 后端代码:复制到
- 执行以下命令使改动生效:
# 后端 mvn clean install # 前端 npm run dev
注意:首次生成后需要重启后端服务使新API生效
4. 功能验证与效果展示
4.1 生成的功能清单
代码生成器自动创建了完整的CRUD功能:
- 前端:
- 商品列表页(带分页、查询条件)
- 新增/编辑表单
- 删除/导出操作
- 后端:
- Controller层RESTful接口
- Service层业务逻辑
- Mapper层数据库操作
- 实体类与DTO
4.2 实际效果对比
传统开发与代码生成效率对比:
| 任务 | 手动开发耗时 | 代码生成耗时 |
|---|---|---|
| 后端CRUD接口 | 4小时 | 30秒 |
| 前端列表页 | 3小时 | 30秒 |
| 前端表单页 | 2小时 | 30秒 |
| 联调测试 | 2小时 | 10分钟 |
| 总计 | 11小时+ | <5分钟 |
4.3 高级定制技巧
虽然生成的代码开箱即用,但实际项目中通常需要定制:
添加复杂查询:
// 在GoodsServiceImpl中添加 public List<Goods> listWithCategory(GoodsQuery query) { return goodsMapper.selectGoodsListWithCategory(query); }扩展前端功能:
<!-- 在goods.vue中添加导出按钮 --> <el-button type="warning" icon="el-icon-download" @click="handleExport" >导出Excel</el-button>添加业务校验:
@Service public class GoodsServiceImpl implements IGoodsService { @Override public void checkGoodsStock(Long goodsId, int quantity) { Goods goods = goodsMapper.selectGoodsById(goodsId); if (goods.getStock() < quantity) { throw new ServiceException("库存不足"); } } }
5. 常见问题排查
5.1 代码生成后404错误
可能原因及解决方案:
- 后端未重启:新增Controller需要重启应用
- 权限未配置:在"系统管理"→"菜单管理"中添加对应路由
- 前端路由冲突:检查
router/index.js中的路由配置
5.2 表单提交报错
典型错误处理:
// 前端拦截器添加错误处理 service.interceptors.response.use( response => { const res = response.data if (res.code !== 200) { Message({ message: res.msg || 'Error', type: 'error', duration: 5 * 1000 }) return Promise.reject(new Error(res.msg || 'Error')) } return res } )5.3 性能优化建议
对于高频访问的商品接口:
添加Redis缓存:
@Cacheable(value = "goods", key = "#goodsId") public Goods getGoodsById(Long goodsId) { return goodsMapper.selectGoodsById(goodsId); }启用MyBatis二级缓存:
<!-- 在mapper.xml中添加 --> <cache eviction="LRU" flushInterval="60000"/>前端分页优化:
// 使用keep-alive缓存列表组件 <keep-alive> <router-view v-if="$route.meta.keepAlive" /> </keep-alive>
在最近的一个社区团购项目中,我们使用若依代码生成器在3天内完成了原本需要2周的基础开发工作。特别是商品管理模块,从数据库设计到上线测试只用了不到1小时,这让我们有更多时间专注于优惠券系统等核心业务的开发。