--- name: crud-by-controller-gas description: 基于 tofly-gas 项目现有 Controller 风格快速生成标准 CRUD 代码(Controller/Service/Mapper/Mapper.xml),并强制约束 SQL 只能写在 *Mapper.xml 中。用户提到生成 CRUD、仿照控制器写接口、补全增删改查、统一接口风格或规范 MyBatis SQL 放置位置时使用。 --- # CRUD 生成 Skill(tofly-gas 场景) ## 适用场景 当用户要求“参考某个 Controller 生成 CRUD”时,按此 Skill 执行。 默认参考 tofly-gas 的 Java 微服务风格,保持原有接口与分层模式一致。 ## 公共 Skill 引用 - POM 工作流:`language/java/pom-factory-skill.md`;**Maven 治理条文**:[`rules/java-pom-governance.mdc`](../../../../../rules/java/java-pom-governance.mdc)。 - **Java CRUD 通用规范**:[`rules/java-crud-common.mdc`](../../../../../rules/java/java-crud-common.mdc)。 - 当任务涉及 `pom.xml`、多模块依赖版本治理、`dependencyManagement/pluginManagement`、`systemPath` 清理时,必须同时应用 `pom-factory-skill` 与 **`java-pom-governance`**。 - 当 CRUD 生成与 POM 治理同时出现时,Controller/Service/Mapper 代码规范遵循本文件,Maven 构建与依赖规范遵循 `pom-factory-skill` + **`java-pom-governance`**。 - 当本文件与 **java-crud-common** 有冲突时:本文件的项目差异规则优先。 ## tofly-gas 专项约束 - **分层、SQL 仅 XML、Mapper 签名与 namespace、禁止 `select *`、动态 SQL 标签**:一律遵循 **`rules/java-crud-common.mdc`**。 - **接口契约**:返回体统一使用项目既有响应对象(通常为 `ResultRespone` 或项目统一结果类型)。 - **CRUD 路径与方法**:`GET /page`、`GET /{id}`、`POST /`、`PUT /`、`DELETE /{id}`、`DELETE /deleteByIds`;查询 `@ModelAttribute` 承接查询对象,写接口 `@RequestBody`;主键参数命名与同模块保持一致。 ## 生成步骤 1. 识别实体信息 - 确认实体名、主键字段、主键类型、表名。 - 确认是否已有 Mapper/Service,避免重复创建。 2. 生成 Controller - 路由、方法命名、参数风格与同模块既有 Controller 保持一致。 - 接口最小集合:分页、详情、新增、修改、单删、批删。 - 禁止在 Controller 编写业务处理逻辑,复杂处理下沉到 Service。 3. 生成 Service 层 - `Service` 接口继承 MyBatis-Plus `IService`(若项目已有该模式)。 - `ServiceImpl` 继承 `ServiceImpl` 并实现接口。 - 不写任何 SQL。 4. 生成 Mapper 层 - `Mapper` 接口继承 `BaseMapper`。 - 如需自定义查询,仅声明方法签名。 5. 生成 `*Mapper.xml` - 创建或补充对应 XML 文件。 - 所有自定义 SQL 都写在 XML 中。 6. 自检 - 按 **`rules/java-crud-common.mdc`** 自检。 - 检查是否出现注解 SQL。 - 检查 Controller 是否包含业务逻辑代码(若有则迁移到 Service)。 - 检查 XML `namespace` 与方法 `id` 是否一一对应。