跳到主要内容

Skills — AI代码生成器

1. 功能介绍

jeecg-codegen 是 Claude Code 的 AI Skill,能够将自然语言需求自动转换为 JeecgBoot 全套 CRUD 代码,包括后端 Java 代码 + 前端 Vue3 代码 + 建表 SQL + 菜单权限 SQL,并支持对已生成模块进行增量字段修改。

核心能力:

  • 从自然语言描述自动生成完整模块代码(Entity、Controller、Service、Mapper、Vue3 页面)
  • 从已有数据库表反向生成代码(自动读取 DDL)
  • 对已生成的模块进行增量修改(加字段/改字段/删字段)
  • 智能推导字段的数据库类型、Java 类型和前端控件
  • 自动匹配系统字典
  • 自动生成 Flyway 数据库迁移脚本
  • 自动生成菜单和按钮权限 SQL

不确定该用哪个 Skill?请查看 AI Skills 技能清单

2. 前置条件

  • 后端项目已搭建:E:\workspace-cc-jeecg\jeecg-boot-framework-2026
  • 前端项目已搭建:E:\workspace-cc-jeecg\jeecgboot-vue3-2026
  • 数据库可访问(已有表场景需要读取 DDL)

3. 使用方式

在 Claude Code 中直接用自然语言描述需求即可。以下是触发关键词:

代码生成、生成代码、创建模块、新增功能、建表、
加字段、增加字段、新增字段、修改字段、删除字段

4. 三种使用场景

4.1 场景A:从已有数据库表生成代码

适用于数据库中已有表,需要生成对应的 Java + Vue3 代码。

根据 biz_order 表生成代码

AI 会自动:

  1. 连接数据库查询表 DDL(SHOW CREATE TABLE biz_order
  2. 解析全部字段(名称/类型/注释/是否可空)
  3. 自动推导前端控件类型
  4. 展示摘要等待确认
  5. 生成全套代码文件

4.2 场景B:从自然语言描述新建模块

适用于从零开始创建新功能模块。

创建一个商品管理模块,包含:
- 商品名称(必填)
- 商品分类(下拉选择)
- 价格(金额)
- 库存数量(数字)
- 商品图片(图片上传)
- 状态(开关)
- 描述(富文本)

AI 会自动:

  1. 推导表名 biz_goods、实体名 BizGoods
  2. 推导每个字段的 DB 类型、Java 类型、前端控件
  3. 添加系统字段(create_by、create_time、update_by、update_time、sys_org_code)
  4. 展示摘要等待确认
  5. 生成建表 DDL(Flyway SQL)
  6. 生成全套 Java + Vue3 代码
  7. 生成菜单权限 SQL

4.3 场景C:给已有模块增量修改字段

适用于已生成的模块需要加/改/删字段。

给商品管理模块加一个"供应商"字段

AI 会自动:

  1. 搜索已有的 Entity.java、data.ts、List.vue、Modal.vue 文件
  2. 解析当前字段列表
  3. 推导新字段属性
  4. 展示修改摘要(每个文件的具体变更内容)
  5. 精确修改每个文件(使用 Edit 工具)

5. 实战示例:创建商品管理模块

5.1 第一步:描述需求

创建一个商品管理模块,包含商品名称、分类、价格、库存、图片、状态、描述

5.2 第二步:AI 询问选项

AI 会展示默认配置,用户只需确认或修改需要改的项:

## 生成选项

1. 后端模块:jeecg-module-system/jeecg-system-biz (默认)
2. 前端风格:vue3 封装风格 (默认,可选 vue3Native 原生风格)
3. 前端视图目录:biz (默认用 entityPackage)
4. 是否读取系统字典:是 (默认)

"确认"采用全部默认值,或告诉我需要修改哪项。

5.3 第三步:AI 展示字段摘要

## 表结构摘要

- 表名:biz_goods
- 实体名:BizGoods
- entityPackage:biz

| 字段名 | 类型 | Java类型 | 控件 | 字典 |
|-----------|--------------|------------|----------------|---------------|
| id | varchar(36) | String | (主键) | - |
| name | varchar(100) | String | Input | - |
| category | varchar(10) | String | JDictSelectTag | goods_category|
| price | decimal(10,2)| BigDecimal | InputNumber | - |
| stock | int | Integer | InputNumber | - |
| image | varchar(1000)| String | JImageUpload | - |
| status | varchar(2) | String | Switch | - |
| content | text | String | JEditor | - |
| create_by | varchar(50) | String | (系统字段) | - |
| create_time| datetime | Date | (系统字段) | - |
| update_by | varchar(50) | String | (系统字段) | - |
| update_time| datetime | Date | (系统字段) | - |
| sys_org_code| varchar(64)| String | (系统字段) | - |

确认生成?(y/n)

5.4 第四步:AI 生成全套文件

确认后,AI 自动生成以下文件:

后端文件(Java):

jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/biz/
├── entity/BizGoods.java # 实体类(@TableName, @Dict 注解)
├── mapper/BizGoodsMapper.java # Mapper 接口
├── mapper/xml/BizGoodsMapper.xml # Mapper XML
├── service/IBizGoodsService.java # Service 接口
├── service/impl/BizGoodsServiceImpl.java # Service 实现
└── controller/BizGoodsController.java # Controller(CRUD + 导入导出)

前端文件(Vue3):

jeecgboot-vue3-2026/src/views/biz/
├── BizGoodsList.vue # 列表页面
├── BizGoodsModal.vue # 编辑弹窗
└── BizGoods.data.ts # 表格列 + 表单 Schema + 查询条件

SQL 文件:

jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/
└── V20260314_1__create_biz_goods.sql # 建表 + 菜单 + 权限按钮

5.5 第五步:后续操作

## 生成完成

### 后端
1. 执行 Flyway SQL(重启后端会自动执行,或手动执行)
2. 重启后端服务

### 前端
1. 前端无需特殊操作,页面已生成
2. 登录后台,在菜单中找到"商品管理"

### 权限
- SQL 已包含菜单和按钮权限(添加/编辑/删除/批量删除/导出/导入)
- 需要在角色管理中给对应角色授权

6. 生成的代码结构

6.1 Entity(实体类)

@Data
@TableName("biz_goods")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class BizGoods implements Serializable {
@TableId(type = IdType.ASSIGN_ID)
private String id;

@Excel(name = "商品名称", width = 15)
private String name;

@Excel(name = "分类", width = 15, dicCode = "goods_category")
@Dict(dicCode = "goods_category")
private String category;

// ... 更多字段
}

6.2 Controller(控制器)

继承 JeecgController 基类,自动提供标准 CRUD + Excel 导入导出:

@RestController
@RequestMapping("/biz/bizGoods")
public class BizGoodsController extends JeecgController<BizGoods, IBizGoodsService> {
// 列表查询、添加、编辑、删除、批量删除、导出、导入
}

6.3 前端 data.ts

包含三部分配置:

  • columns — 表格列定义
  • searchFormSchema — 查询条件
  • formSchema — 编辑表单字段

7. 智能字段推导规则

AI 根据用户描述的语义关键词自动推导完整的字段属性:

语义关键词DB 类型Java 类型前端控件
名称/标题/编码varchar(100)StringInput
金额/价格/费用decimal(10,2)BigDecimalInputNumber
数量/数目/个数intIntegerInputNumber
状态/类型/级别varchar(10)StringJDictSelectTag
是否/开关varchar(2)StringSwitch
日期/生日dateDateDatePicker
时间/日期时间datetimeDateDatePicker(showTime)
备注/描述/说明textStringInputTextArea
内容/富文本textStringJEditor
图片/头像/照片varchar(1000)StringJImageUpload
文件/附件varchar(1000)StringJUpload
用户/负责人varchar(32)StringJSelectUserByDept
部门/组织varchar(32)StringJSelectDept
排序/序号intIntegerInputNumber

已有表场景(从 DB 类型推导):

DB 列类型Java 类型默认前端控件
varchar(n) n≤200StringInput
varchar(n) n>200StringInputTextArea
text / longtextStringInputTextArea
int / tinyintIntegerInputNumber
bigintLongInputNumber
decimal / double / floatBigDecimalInputNumber
dateDateDatePicker
datetime / timestampDateDatePicker(showTime)

8. 字典智能匹配

当用户选择"读取系统字典"时,AI 会:

  1. 查询数据库中所有字典编码和选项值
  2. 按优先级为每个字段匹配字典:
    • 用户明确指定 — 直接使用
    • 字段名精确匹配 — 字段名与 dict_code 一致
    • 语义关键词匹配 — 字段注释含"状态/类型/级别"等,匹配 dict_name
    • 无匹配 — 不使用字典

匹配效果:

  • Entity 自动添加 @Dict(dicCode = "xxx")
  • 列表页自动显示字典翻译文本
  • 表单页自动使用 JDictSelectTag 下拉选择组件

9. 支持的表类型

9.1 单表(默认)

最常见的场景,一个表对应一套 CRUD。

9.2 树表

用户提到"分类/层级/树/上下级"时自动识别:

创建一个产品分类模块,支持树形层级

AI 会自动添加 pidhas_child 字段,前端生成树形表格。

9.3 主子表(一对多)

用户提到"主子表/明细/一对多"时自动识别:

创建一个订单模块,包含订单主表和订单商品明细子表

AI 会生成主表和子表的完整代码,包括关联查询和级联保存/删除。

10. 系统字段

新建表时默认添加 5 个系统字段:

字段说明处理方式
create_by创建人系统自动填充,代码中不展示
create_time创建时间系统自动填充,列表页只读展示
update_by更新人系统自动填充,代码中不展示
update_time更新时间系统自动填充,代码中不展示
sys_org_code所属部门系统自动填充,用于数据权限过滤

注意: 已有表场景会根据实际 DDL 判断,只生成表中实际存在的系统字段。

11. Flyway 数据库迁移

生成的 SQL 文件遵循 Flyway 命名规范:

V{YYYYMMDD}_{序号}__{描述}.sql

示例:V20260314_1__create_biz_goods.sql

AI 会自动检查当天已有的 Flyway 文件,序号自动递增避免冲突。

SQL 文件内容包括:

  1. 建表语句 — CREATE TABLE
  2. 菜单 SQL — INSERT INTO sys_permission(主菜单 + 按钮权限)
  3. 按钮权限 — 添加、编辑、删除、批量删除、导出、导入

12. 前端风格选择

风格说明适用场景
vue3(默认)JeecgBoot 封装风格,使用 JVxeTable、useListPage 等封装组件标准管理后台,开发效率高
vue3NativeAnt Design Vue 原生风格,使用 a-table、a-form 等原生组件需要更多自定义控制的场景

13. 命名约定

类型规则示例
表名snake_casebiz_goods
实体名PascalCase(表名转换)BizGoods
entityPackage表名前缀biz
Controller 路径/{entityPackage}/{entityName}/biz/bizGoods
权限编码{entityPackage}:{tableName}:操作biz:biz_goods:add

14. 常见问题

生成后需要手动做什么?

  1. 重启后端(Flyway 会自动执行 SQL 建表 + 创建菜单)
  2. 登录后台,在角色管理中给对应角色授权新菜单
  3. 刷新页面即可看到新模块

生成到哪个模块?

默认生成到 jeecg-module-system/jeecg-system-biz。如果项目有自定义业务模块(如 jeecg-module-demo),可以在 Step 2 中指定。

能否生成到微服务模块?

可以。在 Step 2 中指定目标模块路径即可,代码结构不变。

增量修改会影响已有代码吗?

不会。AI 使用精确的 Edit 工具修改,只在对应位置插入/删除/修改指定字段的代码,不会影响其他已有字段或手写的业务逻辑。