ruoyi-code-generator

基于若依(RuoYi)框架规范生成 CRUD 代码。当用户需要为数据表生成后端Java代码(实体类、Mapper、Service、Controller)、 前端Vue代码(列表页、API封装)、MyBatis XML映射文件或菜单初始化SQL时使用此技能。 适用于: 创建新模块、添加业务功能、根据表结构生成代码等场景。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "ruoyi-code-generator" with this command: npx skills add alffei/skill_share/alffei-skill-share-ruoyi-code-generator

RuoYi 代码生成器技能

📌 目标 (Goal)

根据用户提供的数据表信息(表名、字段定义),按照若依框架规范自动生成完整的 CRUD 代码,包括:

  • Java 后端代码(Domain、Mapper、Service、ServiceImpl、Controller)
  • MyBatis XML 映射文件
  • Vue 前端代码(页面组件、API 封装)
  • 菜单初始化 SQL

📥 输入定义 (Input)

用户需要提供以下信息(可以通过对话澄清获取):

参数必填说明示例
tableName数据库表名sys_product
tableComment表注释/功能名称产品管理
columns字段列表(含类型、注释)见下方示例
packageName包路径,默认 com.ruoyi.systemcom.ruoyi.business
moduleName模块名,默认取表前缀后的名称product
businessName业务名称,默认取表名去前缀product
author作者名,默认 ruoyizhangsan
tplCategory模板类型: crud/tree/sub,默认 crudcrud

字段定义示例

{
  "tableName": "sys_product",
  "tableComment": "产品管理",
  "columns": [
    {"name": "product_id", "type": "bigint", "comment": "产品ID", "isPk": true, "isIncrement": true},
    {"name": "product_name", "type": "varchar(100)", "comment": "产品名称", "isRequired": true, "isQuery": true},
    {"name": "product_code", "type": "varchar(50)", "comment": "产品编码", "isRequired": true},
    {"name": "category_id", "type": "bigint", "comment": "分类ID", "dictType": "product_category"},
    {"name": "price", "type": "decimal(10,2)", "comment": "价格"},
    {"name": "status", "type": "char(1)", "comment": "状态(0正常 1停用)", "dictType": "sys_normal_disable"},
    {"name": "create_time", "type": "datetime", "comment": "创建时间"}
  ]
}

📤 输出定义 (Output)

生成以下文件结构的代码:

输出文件清单:
├── java/
│   ├── domain/{ClassName}.java          # 实体类
│   ├── mapper/{ClassName}Mapper.java    # Mapper接口
│   ├── service/I{ClassName}Service.java # Service接口
│   ├── service/impl/{ClassName}ServiceImpl.java  # Service实现
│   └── controller/{ClassName}Controller.java     # REST控制器
├── xml/
│   └── {ClassName}Mapper.xml             # MyBatis映射文件
├── vue/
│   ├── api/{businessName}.js             # API封装
│   └── views/{moduleName}/{businessName}/index.vue  # 页面组件
└── sql/
    └── {businessName}Menu.sql            # 菜单初始化SQL

📋 执行流程 (Workflow)

第一步:信息收集与验证

  1. 解析用户请求:识别表名、字段信息
  2. 缺省信息追问:如果缺少必要信息,主动询问用户
  3. 推断默认值
    • className = 表名转大驼峰(去除表前缀如 sys_
    • moduleName = 表前缀后的模块名
    • businessName = 表名去前缀后的小写形式
    • 主键字段 = 字段中 isPk=true 的字段,默认为 {tableName}_id

第二步:变量准备

根据输入计算所有模板变量:

核心变量:
- ${tableName}         表名
- ${tableComment}      表注释  
- ${ClassName}         类名(大驼峰)
- ${className}         类名(小驼峰)
- ${moduleName}        模块名
- ${businessName}      业务名
- ${BusinessName}      业务名(首字母大写)
- ${packageName}       包路径
- ${author}            作者
- ${datetime}          生成日期
- ${pkColumn}          主键字段信息
- ${columns}           所有字段列表
- ${permissionPrefix}  权限前缀 (格式: moduleName:businessName)

第三步:代码生成

按顺序读取并填充模板:

  1. 读取模板文件:从 templates/ 目录加载对应模板
  2. 变量替换:将 ${变量名} 替换为实际值
  3. 条件处理:根据字段配置处理 #if/#foreach 逻辑
  4. 输出代码:生成最终代码文件

第四步:自检与交付

  1. 代码审查:检查生成的代码是否符合规范
  2. 依赖提示:告知用户需要添加的依赖或配置
  3. 使用说明:提供后续操作指引

⚠️ 约束条件 (Constraints)

  1. 命名规范

    • 类名必须使用大驼峰 (PascalCase)
    • 变量名必须使用小驼峰 (camelCase)
    • 包路径必须全小写
  2. 编码规范

    • Java 文件使用 UTF-8 编码
    • 缩进使用 4 个空格
    • 必须包含完整的 Javadoc 注释
  3. 安全规范

    • Controller 必须添加 @PreAuthorize 权限注解
    • 删除操作必须添加 @Log 日志注解
    • 敏感字段(如密码)不出现在列表展示中
  4. 禁止事项

    • ❌ 不生成测试类(如需要请单独请求)
    • ❌ 不修改已存在的文件(除非用户明确要求)
    • ❌ 不硬编码任何敏感信息

🔧 字段类型映射

数据库类型Java类型说明
bigintLong长整型
int/integerInteger整型
varchar/char/textString字符串
datetime/timestampDate日期时间
dateDate日期
decimal/numericBigDecimal高精度数值
float/doubleDouble浮点数
tinyint(1)/bitBoolean布尔值

📁 模板引用

生成代码时,请参考以下模板文件:

  • Java 模板: templates/java/ 目录下的 .vm 文件
  • Vue 模板: templates/vue/ 目录下的 .vm 文件
  • XML 模板: templates/xml/ 目录下的 .vm 文件
  • SQL 模板: templates/sql/ 目录下的 .vm 文件

💡 使用示例

示例对话 1:基础生成

用户: 帮我生成一个产品管理模块的代码,表名是 sys_product

Agent 响应:

  1. 首先确认字段信息
  2. 推断默认配置
  3. 生成完整代码
  4. 提供使用说明

示例对话 2:指定配置

用户:

生成代码:
- 表名: biz_order
- 功能: 订单管理  
- 包路径: com.ruoyi.business
- 字段: order_id(主键), order_no(订单号), customer_name(客户名), amount(金额), status(状态), create_time(创建时间)

Agent 响应:

已为您生成订单管理模块代码,包含以下文件:

Java后端:
- Order.java (实体类)
- OrderMapper.java (Mapper接口)
- IOrderService.java (Service接口)
- OrderServiceImpl.java (Service实现)
- OrderController.java (控制器)

MyBatis:
- OrderMapper.xml (映射文件)

Vue前端:
- order.js (API封装)
- index.vue (列表页面)

SQL脚本:
- orderMenu.sql (菜单初始化)

[具体代码内容...]

🔄 版本说明

  • 兼容版本: RuoYi-Vue v3.9.x
  • 前端框架: Vue 2 + Element UI
  • 后端框架: Spring Boot 2.x + MyBatis

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

springboot-init

No summary provided by upstream source.

Repository SourceNeeds Review
General

spec-architect

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

openclaw-version-monitor

监控 OpenClaw GitHub 版本更新,获取最新版本发布说明,翻译成中文, 并推送到 Telegram 和 Feishu。用于:(1) 定时检查版本更新 (2) 推送版本更新通知 (3) 生成中文版发布说明

Archived SourceRecently Updated