RuoYI-cloud 的代码生成器是其核心功能之一,能够基于数据库表结构自动生成完整的前后端 CRUD 代码,显著提升开发效率,特别适合企业级应用的快速迭代开发。

代码生成器核心优势

  1. 全栈生成:覆盖从数据库到前端页面的完整代码
  2. 零侵入性:生成的代码符合 RuoYI-cloud 规范,可直接集成
  3. 高度可配置:支持自定义模板和生成规则
  4. 减少重复劳动:自动处理 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. 代码生成器配置

  1. 登录后台系统:使用管理员账号登录 RuoYI-cloud 后台
  2. 进入代码生成模块系统工具 → 代码生成
  3. 导入表结构
  • 点击「导入」按钮
  • 选择 sys_oper_log 表
  • 系统自动读取表结构和字段注释
  1. 配置生成选项
  • 基本信息
  • 模块名称:system(根据实际业务模块填写)
  • 业务名称:操作日志
  • 功能名称:operLog
  • 作者:当前开发者姓名
  • 表配置
  • 实体类包名:com.ruoyi.system.domain
  • Mapper接口包名:com.ruoyi.system.mapper
  • Service类包名:com.ruoyi.system.service
  • Controller类包名:com.ruoyi.system.controller
  • 字段配置
  • 可设置字段是否在列表显示、查询条件、表单显示等
  • 可修改字段在前端页面的显示名称

3. 代码生成与集成

  1. 生成代码:点击「生成代码」按钮
  2. 下载压缩包:包含完整的前后端代码
  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>

高级功能

  1. 自定义模板:支持修改代码生成模板,适应不同项目规范
  2. API接口生成:自动生成前后端交互的 API 接口代码
  3. 字典集成:自动识别字段的字典类型并生成对应的字典标签组件
  4. 查询条件生成:根据字段类型自动生成合适的查询条件组件
  5. 导入导出支持:自动生成 Excel 导入导出相关代码

最佳实践

  1. 表设计规范
  • 使用有意义的字段名和注释
  • 合理使用数据类型和长度
  • 添加必要的索引
  1. 生成前配置
  • 仔细检查字段配置,特别是查询条件和表单显示
  • 设置合理的分页大小
  1. 生成后调整
  • 根据实际业务需求调整生成的代码
  • 添加业务特有的验证和逻辑

通过 RuoYI-cloud 的代码生成器,开发者可以快速构建标准化的 CRUD 功能,将开发重点放在业务逻辑实现上,大幅提升开发效率和代码质量。