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 会自动:
- 连接数据库查询表 DDL(
SHOW CREATE TABLE biz_order) - 解析全部字段(名称/类型/注释/是否可空)
- 自动推导前端控件类型
- 展示摘要等待确认
- 生成全套代码文件
4.2 场景B:从自然语言描述新建模块
适用于从零开始创建新功能模块。
创建一个商品管理模块,包含:
- 商品名称(必填)
- 商品分类(下拉选择)
- 价格(金额)
- 库存数量(数字)
- 商品图片(图片上传)
- 状态(开关)
- 描述(富文本)
AI 会自动:
- 推导表名
biz_goods、实体名BizGoods - 推导每个字段的 DB 类型、Java 类型、前端控件
- 添加系统字段(create_by、create_time、update_by、update_time、sys_org_code)
- 展示摘要等待确认
- 生成建表 DDL(Flyway SQL)
- 生成全套 Java + Vue3 代码
- 生成菜单权限 SQL
4.3 场景C:给已有模块增量修改字段
适用于已生成的模块需要加/改/删字段。
给商品管理模块加一个"供应商"字段
AI 会自动:
- 搜索已有的 Entity.java、data.ts、List.vue、Modal.vue 文件
- 解析当前字段列表
- 推导新字段属性
- 展示修改摘要(每个文件的具体变更内容)
- 精确修改每个文件(使用 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) | String | Input |
| 金额/价格/费用 | decimal(10,2) | BigDecimal | InputNumber |
| 数量/数目/个数 | int | Integer | InputNumber |
| 状态/类型/级别 | varchar(10) | String | JDictSelectTag |
| 是否/开关 | varchar(2) | String | Switch |
| 日期/生日 | date | Date | DatePicker |
| 时间/日期时间 | datetime | Date | DatePicker(showTime) |
| 备注/描述/说明 | text | String | InputTextArea |
| 内容/富文本 | text | String | JEditor |
| 图片/头像/照片 | varchar(1000) | String | JImageUpload |
| 文件/附件 | varchar(1000) | String | JUpload |
| 用户/负责人 | varchar(32) | String | JSelectUserByDept |
| 部门/组织 | varchar(32) | String | JSelectDept |
| 排序/序号 | int | Integer | InputNumber |
已有表场景(从 DB 类型推导):
| DB 列类型 | Java 类型 | 默认前端控件 |
|---|---|---|
| varchar(n) n≤200 | String | Input |
| varchar(n) n>200 | String | InputTextArea |
| text / longtext | String | InputTextArea |
| int / tinyint | Integer | InputNumber |
| bigint | Long | InputNumber |
| decimal / double / float | BigDecimal | InputNumber |
| date | Date | DatePicker |
| datetime / timestamp | Date | DatePicker(showTime) |
8. 字典智能匹配
当用户选择"读取系统字典"时,AI 会:
- 查询数据库中所有字典编码和选项值
- 按优先级为每个字段匹配字典:
- 用户明确指定 — 直接使用
- 字段名精确匹配 — 字段名与 dict_code 一致
- 语义关键词匹配 — 字段注释含"状态/类型/级别"等,匹配 dict_name
- 无匹配 — 不使用字典
匹配效果:
- Entity 自动添加
@Dict(dicCode = "xxx") - 列表页自动显示字典翻译文本
- 表单页自动使用
JDictSelectTag下拉选择组件
9. 支持的表类型
9.1 单表(默认)
最常见的场景,一个表对应一套 CRUD。
9.2 树表
用户提到"分类/层级/树/上下级"时自动识别:
创建一个产品分类模块,支持树形层级
AI 会自动添加 pid、has_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 文件内容包括:
- 建表语句 — CREATE TABLE
- 菜单 SQL — INSERT INTO sys_permission(主菜单 + 按钮权限)
- 按钮权限 — 添加、编辑、删除、批量删除、导出、导入
12. 前端风格选择
| 风格 | 说明 | 适用场景 |
|---|---|---|
vue3(默认) | JeecgBoot 封装风格,使用 JVxeTable、useListPage 等封装组件 | 标准管理后台,开发效率高 |
vue3Native | Ant Design Vue 原生风格,使用 a-table、a-form 等原生组件 | 需要更多自定义控制的场景 |
13. 命名约定
| 类型 | 规则 | 示例 |
|---|---|---|
| 表名 | snake_case | biz_goods |
| 实体名 | PascalCase(表名转换) | BizGoods |
| entityPackage | 表名前缀 | biz |
| Controller 路径 | /{entityPackage}/{entityName} | /biz/bizGoods |
| 权限编码 | {entityPackage}:{tableName}:操作 | biz:biz_goods:add |
14. 常见问题
生成后需要手动做什么?
- 重启后端(Flyway 会自动执行 SQL 建表 + 创建菜单)
- 登录后台,在角色管理中给对应角色授权新菜单
- 刷新页面即可看到新模块
生成到哪个模块?
默认生成到 jeecg-module-system/jeecg-system-biz。如果项目有自定义业务模块(如 jeecg-module-demo),可以在 Step 2 中指定。
能否生成到微服务模块?
可以。在 Step 2 中指定目标模块路径即可,代码结构不变。
增量修改会影响已有代码吗?
不会。AI 使用精确的 Edit 工具修改,只在对应位置插入/删除/修改指定字段的代码,不会影响其他已有字段或手写的业务逻辑。