mcpField
R
ruoyi-code-generator

ruoyi-code-generator

github.com/alffei開発6991 回インストール31 週間前に更新
リポジトリ

ruoyi-code-generator について

RuoYi-Vue v3.9.x 向けのコード生成スキルで、テーブルとカラムの定義から CRUD モジュールを作成します。Java バックエンド、MyBatis XML、Vue ファイル、メニュー初期化 SQL を扱い、命名規則とセキュリティ規則も確認します。

主な機能

  1. 01Java CRUD 各層の生成
  2. 02MyBatis XML マッピングの作成
  3. 03Vue ページと API ラッパーの生成
  4. 04メニュー初期化 SQL の作成
  5. 05命名・セキュリティ規則の適用

活用シーン

  1. 01製品管理モジュールのひな型作成
  2. 02テーブル定義からのコード生成
  3. 03ツリー型またはサブテーブル型モジュールの生成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alffei/skill_share --skill ruoyi-code-generator

インストール後、Claude Code で/ruoyi-code-generatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
coding-standards.md
examples.md
templates/java/
controller.java.vm
domain.java.vm
mapper.java.vm
service.java.vm
serviceImpl.java.vm
templates/js/
api.js.vm
templates/sql/
sql.vm
templates/vue/
index.vue.vm
templates/xml/
mapper.xml.vm

詳細

プロジェクトの README より

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

コメント