关于 mybatis-plus-generator
mybatis-plus-generator 是面向明确提出 MyBatis-Plus 代码生成需求的开发技能,按配置和架构要求协助生成 Java 或 Kotlin 代码。它通过分步收集需求、模板生成和进度统计,覆盖从数据库表结构到多层代码的流程。
主要功能
- 01生成 Entity、Mapper、Service 等代码
- 02支持 MVC、DDD、分层与整洁架构
- 03支持 Java 和 Kotlin
- 04收集数据库、包与策略配置
- 05按步骤报告进度并汇总统计
适用场景
- 01根据数据库表结构生成 MyBatis-Plus 代码
- 02按项目架构生成控制器与数据访问层
- 03根据功能需求规划自定义方法
- 04为 Java 或 Kotlin 项目整理生成配置
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ partme-ai/ full-stack-skills --skill mybatis-plus-generator安装后在 Claude Code 中输入/mybatis-plus-generator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSE.txtREADME.mdexamples/architecture-directory-mapping.mdddd-architecture-example.mdfull-workflow-example.mdmvc-architecture-example.mdswagger-annotations-example.mdreference/architecture-directory-mapping-guide.mdarchitecture-directory-quick-reference.mdcode-generation-standards.mdmybatis-plus-generator-guide.mdprogress-and-statistics-formats.mdswagger-annotations-guide.mdtemplate-variables.mdtemplates/aggregate-root.java.ftlaggregate-root.kt.ftlapplication-service.java.ftlapplication-service.kt.ftlassembler.java.ftlassembler.kt.ftlbo.java.ftlbo.kt.ftlcontroller.java.ftlcontroller.kt.ftldomain-event.java.ftldomain-event.kt.ftldomain-service.java.ftldomain-service.kt.ftldto.java.ftldto.kt.ftl详细介绍
何时使用此技能
重要:仅当用户明确提及 MyBatis-Plus 或 mybatis-plus-generator 时,才应触发此技能。
用户提及以下内容时,始终使用此技能:
- MyBatis-Plus 代码生成(明确提及“MyBatis-Plus”或“mybatis-plus”)
- 根据数据库表生成 MyBatis-Plus 代码
- MyBatis-Plus 生成器或 mybatis-plus-generator
- 创建 MyBatis-Plus Entity、Mapper、Service、Controller 代码
- 生成 MyBatis-Plus 代码(明确提及“MyBatis-Plus”)
- MyBatis-Plus 代码生成器
- 使用 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(Domain-Driven Design)
- 分层架构
- 整洁架构
支持的语言:
- Java
- Kotlin
支持的组件类型:
- Entity(实体类)
- Mapper(数据访问接口)
- Service(服务接口)
- ServiceImpl(服务实现类)
- Controller(控制器)
- DTO(Data Transfer Object)
- VO(Value Object / View Object)
- BO(Business Object)
- 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 包(默认:
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了解完整映射规则
- 快速参考:查阅
- 确认目录存在;如果不存在,则创建目录
- 在正确位置生成文件
常见路径示例:
对于基础包为 com.example.order 的 user 表:
- 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 - Hexagonal:Entity →
com/example/order/domain/model/entity/User.java,Controller →com/example/order/infrastructure/adapter/inbound/web/controller/UserController.java - Clean: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 步:创建待办清单
重要:收集完所有信息后,创建详细的待办清单。
针对每张表,生成结构化的待办清单:
## Todo List: MyBatis-Plus Code Generation
### Table: 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 - 用户视图对象
### Table: order
...
重要提示:
- 按表组织
- 列出所有需要生成的对象
- 包含所有方法(标准方法 + 自定义方法)
- 使用复选框跟踪进度
第 6 步:生成代码
重要:根据表结构和需求生成带有智能注释的代码文件。
生成顺序:
- Entity——首先生成(所有其他对象的基础)
- 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 Generator 使用指南
示例
完整示例请参见 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- 仓储接口模板(领域层)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”,以避免误触发。不包含“MyBatis-Plus”的通用术语,如“代码生成器”或“根据表生成代码”,不应触发此技能。