mcpField
M
mybatis-plus-generator

mybatis-plus-generator

github.com/partme-ai开发716369 次安装3 周前更新
代码仓库

关于 mybatis-plus-generator

mybatis-plus-generator 是面向明确提出 MyBatis-Plus 代码生成需求的开发技能,按配置和架构要求协助生成 Java 或 Kotlin 代码。它通过分步收集需求、模板生成和进度统计,覆盖从数据库表结构到多层代码的流程。

主要功能

  1. 01生成 Entity、Mapper、Service 等代码
  2. 02支持 MVC、DDD、分层与整洁架构
  3. 03支持 Java 和 Kotlin
  4. 04收集数据库、包与策略配置
  5. 05按步骤报告进度并汇总统计

适用场景

  1. 01根据数据库表结构生成 MyBatis-Plus 代码
  2. 02按项目架构生成控制器与数据访问层
  3. 03根据功能需求规划自定义方法
  4. 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.txt
README.md
examples/
architecture-directory-mapping.md
ddd-architecture-example.md
full-workflow-example.md
mvc-architecture-example.md
swagger-annotations-example.md
reference/
architecture-directory-mapping-guide.md
architecture-directory-quick-reference.md
code-generation-standards.md
mybatis-plus-generator-guide.md
progress-and-statistics-formats.md
swagger-annotations-guide.md
template-variables.md
templates/
aggregate-root.java.ftl
aggregate-root.kt.ftl
application-service.java.ftl
application-service.kt.ftl
assembler.java.ftl
assembler.kt.ftl
bo.java.ftl
bo.kt.ftl
controller.java.ftl
controller.kt.ftl
domain-event.java.ftl
domain-event.kt.ftl
domain-service.java.ftl
domain-service.kt.ftl
dto.java.ftl
dto.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 步工作流:

  1. 收集配置 - 收集数据库信息、全局配置、包配置和策略配置
  2. 确定架构 - 询问用户采用哪种架构(MVC、DDD 等),以确定要生成哪些对象
  3. 收集需求 - 询问用户的功能需求,以分析并确定要生成的方法
  4. 确定语言 - 询问用户使用哪种编程语言(Java 或 Kotlin)
  5. 创建待办列表 - 生成详细的待办列表,列出表名、对象类型和方法名
  6. 生成代码 - 根据表结构和需求,生成包含智能注释的代码文件
  7. 进度更新 - 在代码生成过程中实时更新进度
  8. 统计信息 - 生成完成后输出统计信息
分步流程
第 1 步:收集配置信息

重要:生成任何代码之前,必须收集以下配置:

  1. 数据库信息:

    • 数据库类型(MySQL、PostgreSQL、Oracle 等)
    • 数据库连接 URL(或请用户提供表结构)
    • 数据库名称
    • 表名(一个或多个表)
    • 如果用户无法提供数据库连接,请索要表结构(CREATE TABLE 语句或表模式)
  2. 全局配置:

    • 作者姓名
    • 输出目录(默认:src/main/java)
    • 文件覆盖策略(覆盖、跳过、询问)
    • 是否启用 Lombok(是/否)
    • 是否启用 API 文档(是/否)
    • API 文档类型(启用时):
      • Swagger 2(使用 io.swagger.annotations.*)
      • OpenAPI 3(使用 io.swagger.v3.oas.annotations.*)
    • 是否启用校验注解(是/否)
  3. 包配置:

    • 父包名(例如:com.example.app)
    • Entity 包(默认:entity)
    • Mapper 包(默认:mapper)
    • Service 包(默认:service)
    • ServiceImpl 包(默认:service.impl)
    • Controller 包(默认:controller)
    • DTO 包(默认:dto)
    • VO 包(默认:vo)
    • BO 包(默认:bo)
  4. 策略配置:

    • 命名策略(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
- [ ] 自定义架构
  - 请指定需要生成的对象类型

等待用户确认后再继续。

重要:根据架构映射目录

确定架构类型后,必须为每个生成的对象找到正确的输出目录。

关键步骤:

  1. 询问用户基础包路径(例如:com.example.order)
  2. 使用架构目录映射确定正确路径:
    • 快速参考:查阅 reference/architecture-directory-quick-reference.md 中的查找表
    • 详细指南:查阅 reference/architecture-directory-mapping-guide.md 了解完整映射规则
  3. 确认目录存在;如果不存在,则创建目录
  4. 在正确位置生成文件

常见路径示例:

对于基础包为 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 步:收集需求

重要:询问用户的功能需求,了解需要生成哪些方法。

询问用户:

请描述此次生成代码的功能需求:

例如:
- 用户管理:需要根据邮箱查询用户、根据用户名查询用户、用户登录验证
- 订单管理:需要订单统计、订单分页查询、订单状态更新
- 商品管理:需要商品搜索、商品分类查询、库存管理

请详细描述每个表需要哪些功能,我会根据需求自动分析需要生成的方法。

用户提供需求后:

  1. 分析需求,确定:

    • 标准 CRUD 方法(创建、读取、更新、删除)
    • 自定义查询方法(findByEmail、findByUsername 等)
    • 自定义业务方法(统计、聚合等)
    • 自定义更新方法(updateStatus、updatePassword 等)
  2. 针对每张表,确定:

    • 所需的标准方法
    • 根据需求所需的自定义方法
    • 方法参数和返回类型
    • 业务逻辑提示(用于方法骨架)

输出:需求分析,展示:

  • 每张表的标准方法
  • 每张表的自定义方法
  • 方法签名(参数和返回类型)
第 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 步:生成代码

重要:根据表结构和需求生成带有智能注释的代码文件。

生成顺序:

  1. Entity——首先生成(所有其他对象的基础)
  2. Mapper——其次生成(数据访问层)
  3. Service——第三生成(业务接口)
  4. ServiceImpl——第四生成(业务实现)
  5. Controller——第五生成(API 层)
  6. DTO/VO/BO——第六生成(架构需要时)

针对每个对象:

  1. 根据对象类型和语言,从 templates/ 目录加载合适的模板
  2. 分析表结构:读取列、类型、约束、主键、外键和关系
  3. 生成智能注释:基于业务背景,而不仅是技术名称
    • 类注释:说明用途并列出主要字段
    • 方法注释:说明业务逻辑,并包含所有参数和返回类型
    • 字段注释:说明业务含义,而不仅是列名
  4. 生成代码:替换模板变量、添加注解并生成方法骨架
  5. 对于自定义方法:生成签名、添加业务逻辑注释和 TODO 提示
  6. 确定输出目录:使用架构目录映射(参见第 2 步)
  7. 根据架构和包配置,将文件保存到正确的位置

生成每个对象后:

  • 更新待办清单:将已完成项标记为 [x]
  • 向用户展示进度
  • 继续处理下一个对象

代码生成标准:关于注释、模板和代码质量的详细要求,请参见 reference/code-generation-standards.md。

第 7 步:进度更新

重要:在代码生成期间实时更新进度。

在以下节点更新进度:

  • 开始处理每张表后
  • 生成每个对象后
  • 添加每个方法后
  • 完成每张表后

进度格式:详细的进度更新格式和示例,请参见 reference/progress-and-statistics-formats.md。

第 8 步:统计信息

重要:所有代码生成完成后,输出完整的统计信息。

统计信息格式:详细的统计信息格式请参见 reference/progress-and-statistics-formats.md,包括:

  • 总体统计信息(表、对象、方法、文件、行数)
  • 每张表的统计信息
  • 每种类型的统计信息
  • 文件位置
  • 代码质量检查清单
代码生成规范

重要:生成的代码必须包含智能且结合上下文的注释,而不只是模板占位符。

关键要求:

  1. 类注释:根据业务上下文说明用途,包含表映射,并列出主要字段
  2. 方法注释:说明业务逻辑,包含所有参数及其类型、返回值及其类型,以及异常
  3. 字段注释:说明业务含义,包含数据类型和约束,而不只是列名

详细规范:参见 reference/code-generation-standards.md,了解:

  • 完整的注释格式要求
  • 模板使用指南
  • 模板变量参考
  • Swagger 注解选择
  • 自定义方法生成规范
  • 代码质量要求
最佳实践
  1. 智能注释:根据表结构分析和业务需求生成注释,而不只是使用模板占位符
  2. 上下文感知:理解表关系和业务上下文,以生成有意义的注释
  3. 方法分析:分析用户需求,确定需要哪些方法
  4. 进度跟踪:始终更新待办事项列表并展示进度
  5. 代码质量:生成包含适当注解和验证、可用于生产环境的代码
  6. 增强模板:以模板为基础,并通过智能补充内容加以增强
  7. 语言支持:支持使用适当模板的 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”的通用术语,如“代码生成器”或“根据表生成代码”,不应触发此技能。

评论

支持 Markdown