MyBatis-Plus代码生成器Skill mybatis-plus-generator

这是一个用于自动化生成 MyBatis-Plus 代码的技能,支持从数据库表自动生成实体类、Mapper、Service、Controller 等对象,包含标准 CRUD 方法和自定义方法,并生成智能注释,支持 MVC、DDD 等架构和 Java、Kotlin 语言。关键词包括 MyBatis-Plus, 代码生成, 后端开发, 数据库驱动, 自动化工具, 架构设计, 效率提升。

后端开发 0 次安装 0 次浏览 更新于 3/21/2026

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 步工作流程:

  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
    • 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. 生成文件到正确位置

常见路径示例:

对于 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:收集需求

关键:询问用户功能需求以了解需要生成哪些方法。

询问用户:

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

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

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

用户提供需求后:

  1. 分析需求以识别:

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

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

输出: 需求分析显示:

  • 每个表的标准方法
  • 每个表的自定义方法
  • 方法签名(参数和返回类型)

步骤 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:生成代码

关键:基于表结构和需求生成带有智能注释的代码文件。

生成顺序:

  1. 实体类 - 第一(所有其他对象的基础)
  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 生成器使用指南

示例

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” 时不应触发此技能。