name: mybatis-plus-generator description: | 提供全面的指导,用于从数据库表生成 MyBatis-Plus 代码,包括实体类、Mapper、Service、ServiceImpl、Controller、DTO、VO、BO 等相关对象。仅在用户明确提到 MyBatis-Plus、mybatis-plus-generator 或想使用 MyBatis-Plus 框架生成代码时使用。该技能自动为 MyBatis-Plus 项目生成标准 CRUD 方法和基于用户需求的自定义方法。支持 MVC 和 DDD 架构,Java 和 Kotlin 语言。不要为通用的代码生成、JPA/Hibernate 或其他 ORM 框架触发。 license: 完整条款见 LICENSE.txt
何时使用此技能
关键:此技能仅在用户明确提到 MyBatis-Plus 或 mybatis-plus-generator 时才应触发。
当用户提到以下内容时,始终使用此技能:
- MyBatis-Plus 代码生成(明确提到 “MyBatis-Plus” 或 “mybatis-plus”)
- 从数据库表生成 MyBatis-Plus 代码
- MyBatis-Plus 生成器或 mybatis-plus-generator
- 创建 MyBatis-Plus 实体类、Mapper、Service、Controller 代码
- 生成 MyBatis-Plus 代码(明确提到 “MyBatis-Plus”)
- MyBatis-Plus 代码生成器(MyBatis-Plus code generator)
- 使用 MyBatis-Plus 生成代码(generate code using MyBatis-Plus)
触发短语包括:
- “生成 MyBatis-Plus 代码” (generate MyBatis-Plus code) - 必须包含 “MyBatis-Plus”
- “MyBatis-Plus 代码生成” (MyBatis-Plus code generation) - 必须包含 “MyBatis-Plus”
- “mybatis-plus-generator” (明确提到生成器)
- “使用 MyBatis-Plus 根据表结构生成代码” (use MyBatis-Plus to generate code from table structure)
- “MyBatis-Plus 生成 Entity、Service、Controller” (MyBatis-Plus generate Entity, Service, Controller)
- “MyBatis-Plus 代码生成器” (MyBatis-Plus code generator)
不要为此触发此技能:
- 未提及 MyBatis-Plus 的通用代码生成
- JPA/Hibernate 代码生成
- 其他 ORM 框架(TypeORM, Sequelize 等)
- 无 MyBatis-Plus 上下文的通用 CRUD 操作
- “根据表结构生成代码” 未包含 “MyBatis-Plus” (太通用)
- “生成 CRUD 代码” 未包含 “MyBatis-Plus” (太通用)
- “代码生成器” 未包含 “MyBatis-Plus” (太通用)
支持的架构:
- 传统 MVC(Model-View-Controller)
- DDD(领域驱动设计)
- 分层架构(Layered Architecture)
- 整洁架构(Clean Architecture)
支持的语言:
- Java
- Kotlin
支持的组件类型:
- 实体类(Entity)
- 数据访问接口(Mapper)
- 服务接口(Service)
- 服务实现类(ServiceImpl)
- 控制器(Controller)
- 数据传输对象(DTO)
- 值对象/视图对象(VO)
- 业务对象(BO)
- 数据模型(Model)
如何使用此技能
关键:此技能仅在用户明确提到 MyBatis-Plus 或 mybatis-plus-generator 时才应触发。不要为无 MyBatis-Plus 上下文的通用代码生成请求触发。
工作流程概述
此技能遵循系统化的 8 步工作流程:
- 收集配置 - 收集数据库信息、全局配置、包配置、策略配置
- 确定架构 - 询问用户架构类型(MVC、DDD 等)以确定要生成的对象
- 收集需求 - 询问用户功能需求以分析和确定要生成的方法
- 确定语言 - 询问用户编程语言(Java 或 Kotlin)
- 创建待办列表 - 生成详细的待办列表,包含表名、对象类型和方法名
- 生成代码 - 基于表结构和需求生成带有智能注释的代码文件
- 进度更新 - 在代码生成过程中提供实时进度更新
- 统计 - 生成完成后输出统计信息
逐步流程
步骤 1:收集配置
关键:在生成任何代码之前,必须收集以下配置:
-
数据库信息:
- 数据库类型(MySQL, PostgreSQL, Oracle 等)
- 数据库连接 URL(或要求用户提供表结构)
- 数据库名称
- 表名(一个或多个表)
- 如果用户无法提供数据库连接,要求提供表结构(CREATE TABLE 语句或表模式)
-
全局配置:
- 作者姓名
- 输出目录(默认:
src/main/java) - 文件覆盖策略(覆盖、跳过、询问)
- 启用 Lombok(是/否)
- 启用 API 文档(是/否)
- API 文档类型(如果启用):
- Swagger 2(使用
io.swagger.annotations.*) - OpenAPI 3(使用
io.swagger.v3.oas.annotations.*)
- Swagger 2(使用
- 启用验证注解(是/否)
-
包配置:
- 父包名(例如,
com.example.app) - 实体类包(默认:
entity) - Mapper 包(默认:
mapper) - Service 包(默认:
service) - ServiceImpl 包(默认:
service.impl) - Controller 包(默认:
controller) - DTO 包(默认:
dto) - VO 包(默认:
vo) - BO 包(默认:
bo)
- 父包名(例如,
-
策略配置:
- 命名策略(camelCase, PascalCase 等)
- 表前缀移除(是/否,前缀名称)
- 字段命名策略
- 主键策略(AUTO, UUID 等)
重要:API 文档类型选择:
当用户启用 API 文档时,必须询问:
请选择 API 文档类型:
- [ ] Swagger 2
- 使用注解:@ApiModel, @ApiModelProperty, @Api, @ApiOperation
- 依赖:springfox-swagger2, springfox-swagger-ui
- 适用于:Spring Boot 2.x 项目
- [ ] OpenAPI 3
- 使用注解:@Schema, @Tag, @Operation, @Parameter
- 依赖:springdoc-openapi-ui
- 适用于:Spring Boot 2.2+ 和 Spring Boot 3.x 项目
等待用户确认后再继续。
输出: 配置摘要,显示所有收集的信息,包括 API 文档类型。
步骤 2:确定架构
关键:必须询问用户架构类型以确定要生成的对象。
呈现架构选项:
请选择项目架构类型:
- [ ] 传统 MVC (Model-View-Controller)
- 生成:Entity, Mapper, Service, ServiceImpl, Controller
- [ ] DDD (领域驱动设计)
- 生成:Entity, Mapper, Service, ServiceImpl, Controller, DTO, VO, BO
- [ ] 分层架构 (Layered Architecture)
- 生成:Entity, Mapper, Service, ServiceImpl, Controller
- [ ] 整洁架构 (Clean Architecture)
- 生成:Entity, Repository, UseCase, Controller, DTO
- [ ] 自定义架构
- 请指定需要生成的对象类型
等待用户确认后再继续。
重要:基于架构的目录映射
确定架构类型后,必须识别每个生成对象的正确输出目录。
关键步骤:
- 询问用户基础包路径(例如,
com.example.order) - 使用架构目录映射确定正确路径:
- 快速参考: 见
reference/architecture-directory-quick-reference.md查找表 - 详细指南: 见
reference/architecture-directory-mapping-guide.md完整映射规则
- 快速参考: 见
- 验证目录存在或根据需要创建
- 生成文件到正确位置
常见路径示例:
对于 user 表,基础包为 com.example.order:
- MVC: Entity →
com/example/order/entity/User.java, Controller →com/example/order/controller/UserController.java - DDD: Entity →
com/example/order/domain/model/aggregate/user/User.java, Controller →com/example/order/interfaces/web/controller/UserController.java - 六边形架构: Entity →
com/example/order/domain/model/entity/User.java, Controller →com/example/order/infrastructure/adapter/inbound/web/controller/UserController.java - 整洁架构: Entity →
com/example/order/domain/entity/User.java, Controller →com/example/order/infrastructure/web/controller/UserController.java - COLA 架构: Entity →
com/example/order/domain/model/entity/User.java, Controller →com/example/order/adapter/web/controller/UserController.java
关键: 如果项目结构不明确,请始终与用户确认确切的目录结构。询问:“请确认项目的目录结构,以便我将生成的代码放在正确的位置。”
步骤 3:收集需求
关键:询问用户功能需求以了解需要生成哪些方法。
询问用户:
请描述此次生成代码的功能需求:
例如:
- 用户管理:需要根据邮箱查询用户、根据用户名查询用户、用户登录验证
- 订单管理:需要订单统计、订单分页查询、订单状态更新
- 商品管理:需要商品搜索、商品分类查询、库存管理
请详细描述每个表需要哪些功能,我会根据需求自动分析需要生成的方法。
用户提供需求后:
-
分析需求以识别:
- 标准 CRUD 方法(创建、读取、更新、删除)
- 自定义查询方法(findByEmail, findByUsername 等)
- 自定义业务方法(统计、聚合等)
- 自定义更新方法(updateStatus, updatePassword 等)
-
对于每个表,识别:
- 所需的标准方法
- 基于需求的自定义方法
- 方法参数和返回类型
- 业务逻辑提示(用于方法骨架)
输出: 需求分析显示:
- 每个表的标准方法
- 每个表的自定义方法
- 方法签名(参数和返回类型)
步骤 4:确定语言
关键:询问用户编程语言。
请选择编程语言:
- [ ] Java
- [ ] Kotlin
等待用户确认后再继续。
注意: templates/ 目录中的模板支持 Java 和 Kotlin。基于用户选择使用适当的模板。
步骤 5:创建待办列表
关键:收集所有信息后,创建详细的待办列表。
对于每个表,生成结构化的待办列表:
## 待办列表:MyBatis-Plus 代码生成
### 表:user
#### Entity 层
- [ ] User.java - 实体类
- [ ] 类注释
- [ ] 字段定义(id, username, email, password, status, createTime, updateTime)
- [ ] 字段注释
#### Mapper 层
- [ ] UserMapper.java - 数据访问接口
- [ ] 类注释
- [ ] 基础 CRUD 方法(继承 BaseMapper)
#### Service 层
- [ ] UserService.java - 服务接口
- [ ] 类注释
- [ ] saveUser() - 保存用户
- [ ] findById() - 根据ID查询
- [ ] updateUser() - 更新用户
- [ ] deleteById() - 删除用户
- [ ] findByEmail() - 根据邮箱查询(自定义方法)
- [ ] findByUsername() - 根据用户名查询(自定义方法)
#### ServiceImpl 层
- [ ] UserServiceImpl.java - 服务实现类
- [ ] 类注释
- [ ] 实现所有 Service 接口方法
- [ ] 方法注释和实现骨架
#### Controller 层
- [ ] UserController.java - 控制器
- [ ] 类注释
- [ ] createUser() - 创建用户
- [ ] getUserById() - 查询用户
- [ ] updateUser() - 更新用户
- [ ] deleteUser() - 删除用户
- [ ] getUserByEmail() - 根据邮箱查询(自定义接口)
#### DTO 层(如果架构需要)
- [ ] UserCreateDTO.java - 创建用户DTO
- [ ] UserUpdateDTO.java - 更新用户DTO
- [ ] UserQueryDTO.java - 查询用户DTO
#### VO 层(如果架构需要)
- [ ] UserVO.java - 用户视图对象
### 表:order
...
重要:
- 按表组织
- 列出所有需要生成的对象
- 包含所有方法(标准 + 自定义)
- 使用复选框跟踪进度
步骤 6:生成代码
关键:基于表结构和需求生成带有智能注释的代码文件。
生成顺序:
- 实体类 - 第一(所有其他对象的基础)
- Mapper - 第二(数据访问层)
- Service - 第三(业务接口)
- ServiceImpl - 第四(业务实现)
- Controller - 第五(API 层)
- DTO/VO/BO - 第六(如果架构需要)
对于每个对象:
- 加载适当的模板从
templates/目录,基于对象类型和语言 - 分析表结构: 读取列、类型、约束、主键、外键、关系
- 生成智能注释: 基于业务上下文,而不仅是技术名称
- 类注释:解释目的,列出主要字段
- 方法注释:解释业务逻辑,包含所有参数和返回类型
- 字段注释:解释业务含义,而不仅是列名
- 生成代码: 替换模板变量,添加注解,生成方法骨架
- 对于自定义方法: 生成签名,添加业务逻辑注释,添加 TODO 提示
- 确定输出目录: 使用架构目录映射(见步骤 2)
- 保存文件到基于架构和包配置的正确位置
生成每个对象后:
- 更新待办列表:用
[x]标记完成的项目 - 向用户显示进度
- 继续下一个对象
代码生成标准: 见 reference/code-generation-standards.md 有关注释、模板和代码质量的详细要求。
步骤 7:进度更新
关键:在代码生成过程中提供实时进度更新。
在以下事件后更新进度:
- 每个表开始处理
- 每个对象生成
- 每个方法添加
- 每个表完成
进度格式: 见 reference/progress-and-statistics-formats.md 详细进度更新格式和示例。
步骤 8:统计
关键:所有代码生成完成后,输出全面的统计信息。
统计格式: 见 reference/progress-and-statistics-formats.md 详细统计格式,包括:
- 整体统计(表数、对象数、方法数、文件数、行数)
- 每表统计
- 每类型统计
- 文件位置
- 代码质量检查清单
代码生成标准
重要:生成的代码必须包含智能的、上下文感知的注释,而不仅是模板占位符。
关键要求:
- 类注释: 基于业务上下文解释目的,包含表映射,列出主要字段
- 方法注释: 解释业务逻辑,包含所有带类型的参数,带类型的返回值,异常
- 字段注释: 解释业务含义,包含数据类型和约束,而不仅是列名
详细标准: 见 reference/code-generation-standards.md:
- 完整注释格式要求
- 模板使用指南
- 模板变量参考
- Swagger 注解选择
- 自定义方法生成标准
- 代码质量要求
最佳实践
- 智能注释: 基于表结构分析和业务需求生成注释,而不仅是模板占位符
- 上下文感知: 理解表关系和业务上下文以生成有意义的注释
- 方法分析: 分析用户需求以确定需要哪些方法
- 进度跟踪: 始终更新待办列表并显示进度
- 代码质量: 生成生产就绪代码,带有适当的注解和验证
- 模板增强: 以模板为基础,但增强为智能添加
- 语言支持: 支持 Java 和 Kotlin 的适当模板
参考文档
关键:使用这些参考文档获取详细指导:
架构与目录映射
reference/architecture-directory-mapping-guide.md- 所有架构的完整目录映射指南(关键)reference/architecture-directory-quick-reference.md- 目录映射快速查找表
代码生成标准
reference/code-generation-standards.md- 详细注释标准、模板使用和代码质量要求reference/template-variables.md- 模板变量完整列表reference/swagger-annotations-guide.md- Swagger 2 与 OpenAPI 3 注解比较
进度与统计
reference/progress-and-statistics-formats.md- 进度更新和统计输出格式
MyBatis-Plus 参考
reference/mybatis-plus-generator-guide.md- MyBatis-Plus 生成器使用指南
示例
见 examples/ 目录完整示例:
examples/mvc-architecture-example.md- MVC 架构生成示例examples/ddd-architecture-example.md- DDD 架构生成示例examples/full-workflow-example.md- 完整工作流程示例examples/architecture-directory-mapping.md- 不同架构目录映射示例examples/swagger-annotations-example.md- Swagger 2 与 OpenAPI 3 注解示例
模板
模板位于 templates/ 目录,使用 FreeMarker 语法(.ftl 文件),严格遵循 MyBatis-Plus 官方模板。
标准模板(MVC 架构)
Java 模板:
entity.java.ftl- 实体类模板mapper.java.ftl- Mapper 接口模板service.java.ftl- Service 接口模板serviceImpl.java.ftl- Service 实现模板controller.java.ftl- Controller 模板dto.java.ftl- DTO 模板vo.java.ftl- VO 模板bo.java.ftl- BO 模板
Kotlin 模板:
entity.kt.ftl- 实体数据类模板mapper.kt.ftl- Mapper 接口模板service.kt.ftl- Service 接口模板serviceImpl.kt.ftl- Service 实现模板controller.kt.ftl- Controller 模板dto.kt.ftl- DTO 模板vo.kt.ftl- VO 模板bo.kt.ftl- BO 模板
DDD 架构模板
所有 DDD 模板位于 templates/ 根目录,支持 Java 和 Kotlin:
域层:
aggregate-root.java.ftl/aggregate-root.kt.ftl- 聚合根模板repository.java.ftl/repository.kt.ftl- Repository 接口模板(域层)domain-service.java.ftl/domain-service.kt.ftl- 域服务模板value-object.java.ftl/value-object.kt.ftl- 值对象模板domain-event.java.ftl/domain-event.kt.ftl- 域事件模板
应用层:
application-service.java.ftl/application-service.kt.ftl- 应用服务模板
接口层:
assembler.java.ftl/assembler.kt.ftl- DTO 组装器模板
模板特性:
- 支持 Swagger 2 和 OpenAPI 3 注解
- 基于表结构的智能注释
- 自定义方法生成支持
- Kotlin 特定特性(数据类、空安全等)
- DDD 特定模式(聚合根、值对象、域事件)
- FreeMarker 语法模板引擎
参考: 见 MyBatis-Plus 官方模板:
关键词
英文关键词: mybatis-plus, mybatis-plus-generator, mybatis-plus code generator, mybatis-plus code generation, generate mybatis-plus code, mybatis-plus entity generator, mybatis-plus mapper generator, mybatis-plus service generator, mybatis-plus controller generator, mybatis-plus crud generation, mybatis-plus from table, mybatis-plus code from database
中文关键词(中文关键词): MyBatis-Plus, mybatis-plus-generator, MyBatis-Plus 代码生成器, MyBatis-Plus 代码生成, 生成 MyBatis-Plus 代码, MyBatis-Plus 实体类生成, MyBatis-Plus Mapper 生成, MyBatis-Plus Service 生成, MyBatis-Plus Controller 生成, MyBatis-Plus CRUD 生成, MyBatis-Plus 根据表生成代码, MyBatis-Plus 数据库转代码, MyBatis-Plus 表转 Java, 使用 MyBatis-Plus 生成代码
重要: 所有关键词必须包含 “MyBatis-Plus” 或 “mybatis-plus” 以避免误触发。通用术语如 “代码生成器” (code generator) 或 “根据表生成代码” (generate code from table) 未包含 “MyBatis-Plus” 时不应触发此技能。