RuoYI-cloud 的代码生成器是其核心功能之一,能够基于数据库表结构自动生成完整的前后端 CRUD 代码,显著提升开发效率,特别适合企业级应用的快速迭代开发。
代码生成器核心优势
- 全栈生成:覆盖从数据库到前端页面的完整代码
- 零侵入性:生成的代码符合 RuoYI-cloud 规范,可直接集成
- 高度可配置:支持自定义模板和生成规则
- 减少重复劳动:自动处理 80% 的基础 CRUD 代码
使用流程详解
1. 数据库表准备
首先需要创建好数据库表结构,以操作日志表为例:
sqlCREATE TABLE `sys_oper_log` (`oper_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '操作ID',`title` varchar(50) DEFAULT '' COMMENT '操作模块',`business_type` int(2) DEFAULT '0' COMMENT '业务类型',`method` varchar(100) DEFAULT '' COMMENT '方法名称',`request_method` varchar(10) DEFAULT '' COMMENT '请求方式',`operator_type` int(1) DEFAULT '0' COMMENT '操作人类别',`oper_name` varchar(50) DEFAULT '' COMMENT '操作人',`dept_name` varchar(50) DEFAULT '' COMMENT '部门名称',`oper_url` varchar(255) DEFAULT '' COMMENT '请求URL',`oper_ip` varchar(50) DEFAULT '' COMMENT '主机地址',`oper_location` varchar(255) DEFAULT '' COMMENT '操作地点',`oper_param` varchar(2000) DEFAULT '' COMMENT '请求参数',`json_result` varchar(2000) DEFAULT '' COMMENT '返回参数',`status` int(1) DEFAULT '0' COMMENT '操作状态',`error_msg` varchar(2000) DEFAULT '' COMMENT '错误消息',`oper_time` datetime DEFAULT NULL COMMENT '操作时间',PRIMARY KEY (`oper_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志记录';
2. 代码生成器配置
- 登录后台系统:使用管理员账号登录 RuoYI-cloud 后台
- 进入代码生成模块:
系统工具
→代码生成
- 导入表结构:
- 点击「导入」按钮
- 选择
sys_oper_log
表 - 系统自动读取表结构和字段注释
- 配置生成选项:
- 基本信息:
- 模块名称:system(根据实际业务模块填写)
- 业务名称:操作日志
- 功能名称:operLog
- 作者:当前开发者姓名
- 表配置:
- 实体类包名:com.ruoyi.system.domain
- Mapper接口包名:com.ruoyi.system.mapper
- Service类包名:com.ruoyi.system.service
- Controller类包名:com.ruoyi.system.controller
- 字段配置:
- 可设置字段是否在列表显示、查询条件、表单显示等
- 可修改字段在前端页面的显示名称
3. 代码生成与集成
- 生成代码:点击「生成代码」按钮
- 下载压缩包:包含完整的前后端代码
- 代码结构:
src/├── main/│ ├── java/│ │ └── com/ruoyi/system/│ │ ├── domain/SysOperLog.java│ │ ├── mapper/SysOperLogMapper.java│ │ ├── service/ISysOperLogService.java│ │ ├── service/impl/SysOperLogServiceImpl.java│ │ └── controller/SysOperLogController.java│ └── resources/│ └── mapper/system/SysOperLogMapper.xml├── frontend/│ └── src/│ ├── api/system/operLog.js│ ├── views/system/operLog/│ │ ├── index.vue│ │ └── index.js
自动生成代码示例
后端代码示例
实体类 SysOperLog.java
javapackage com.ruoyi.system.domain;import com.ruoyi.common.annotation.Excel;import com.ruoyi.common.core.domain.BaseEntity;import java.util.Date;public class SysOperLog extends BaseEntity {private static final long serialVersionUID = 1L;/** 操作ID */private Long operId;/** 操作模块 */@Excel(name = "操作模块")private String title;/** 业务类型 */@Excel(name = "业务类型")private Integer businessType;// 其他字段...// getter/setter方法...}
Controller 类 SysOperLogController.java
javapackage com.ruoyi.system.controller;import com.ruoyi.common.core.controller.BaseController;import com.ruoyi.common.core.domain.AjaxResult;import com.ruoyi.common.core.page.TableDataInfo;import com.ruoyi.system.domain.SysOperLog;import com.ruoyi.system.service.ISysOperLogService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;@RestController@RequestMapping("/system/operLog")public class SysOperLogController extends BaseController {@Autowiredprivate ISysOperLogService operLogService;@GetMapping("/list")public TableDataInfo list(SysOperLog operLog) {startPage();return getDataTable(operLogService.selectOperLogList(operLog));}@DeleteMapping("/{operIds}")public AjaxResult remove(@PathVariable Long[] operIds) {return toAjax(operLogService.deleteOperLogByIds(operIds));}@PostMapping("/clean")public AjaxResult clean() {operLogService.cleanOperLog();return AjaxResult.success();}}
前端代码示例
Vue 页面 index.vue
vue<template><div class="app-container"><el-table v-loading="loading" :data="operLogList"><el-table-column label="操作ID" align="center" prop="operId" width="80"/><el-table-column label="操作模块" align="center" prop="title" :show-overflow-tooltip="true"/><el-table-column label="业务类型" align="center" prop="businessType" width="100"><template slot-scope="scope"><dict-tag :options="dict.type.sys_oper_type" :value="scope.row.businessType"/></template></el-table-column><!-- 其他列... --><el-table-column label="操作" align="center" class-name="small-padding fixed-width"><template slot-scope="scope"><el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)">详情</el-button></template></el-table-column></el-table><pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList"/></div></template><script>import { listOperLog, getOperLog, delOperLog, cleanOperLog } from "@/api/system/operLog";export default {name: "OperLog",dicts: ['sys_oper_type'],data() {return {operLogList: [],total: 0,loading: true,queryParams: {pageNum: 1,pageSize: 10,title: undefined,businessType: undefined}};},created() {this.getList();},methods: {getList() {this.loading = true;listOperLog(this.queryParams).then(response => {this.operLogList = response.rows;this.total = response.total;this.loading = false;});}}};</script>
高级功能
- 自定义模板:支持修改代码生成模板,适应不同项目规范
- API接口生成:自动生成前后端交互的 API 接口代码
- 字典集成:自动识别字段的字典类型并生成对应的字典标签组件
- 查询条件生成:根据字段类型自动生成合适的查询条件组件
- 导入导出支持:自动生成 Excel 导入导出相关代码
最佳实践
- 表设计规范:
- 使用有意义的字段名和注释
- 合理使用数据类型和长度
- 添加必要的索引
- 生成前配置:
- 仔细检查字段配置,特别是查询条件和表单显示
- 设置合理的分页大小
- 生成后调整:
- 根据实际业务需求调整生成的代码
- 添加业务特有的验证和逻辑
通过 RuoYI-cloud 的代码生成器,开发者可以快速构建标准化的 CRUD 功能,将开发重点放在业务逻辑实现上,大幅提升开发效率和代码质量。