mybatis-plus 的 autogenerator 是官方推荐的代码生成器(3.5.1+ 已弃用,改用 fastautogenerator),可基于数据库元信息一键生成 entity、mapper、service、controller 等基础代码,核心需配置数据源、全局策略、包路径和模板引擎。

MyBatis-Plus 的 AutoGenerator 是官方推荐的代码生成器(注意:3.5.1+ 版本已弃用 AutoGenerator,改用 FastAutoGenerator;但仍有大量项目沿用旧版写法)。它通过读取数据库元信息,一键生成实体类(Entity)、Mapper 接口、Service 层、Controller 等基础代码,核心在于配置数据源、全局策略、包路径和模板引擎。
下面直接说清楚怎么用(以兼容主流 Spring Boot 项目、MySQL 数据库为例):
配置依赖(Maven)
确保引入了 MyBatis-Plus 代码生成器模块:
<dependency><groupid>com.baomidou</groupid><artifactid>mybatis-plus-generator</artifactid><version>3.5.3.1</version><!-- 推荐 3.5.3.x,稳定支持 JDK8+ --></dependency><!-- 模板引擎(默认使用 Velocity,也可换 Freemarker/Beetl) --><dependency><groupid>org.apache.velocity</groupid><artifactid>velocity-engine-core</artifactid><version>2.4</version></dependency>
⚠️ 注意:3.5.1 及以上版本
AutoGenerator已标记为@Deprecated,新项目建议用FastAutoGenerator(后文也会提),但逻辑本质一致。
使用 AutoGenerator 编写生成逻辑(Java 方式)
新建一个 CodeGenerator.java(可放在 test/java 下运行):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
public class CodeGenerator {
public static void main(String[] args) {
// 1. 数据源配置
DataSourceConfig dsc = new DataSourceConfig.Builder(
"jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=Asia/Shanghai",
"root", "password")
.build();
// 2. 全局配置
GlobalConfig gc = new GlobalConfig.Builder()
.outputDir("src/main/java") // 输出目录(建议先建好)
.author("YourName")
.disableOpenDir() // 生成后不自动打开文件夹
.fileOverride() // 覆盖已有文件(谨慎开启)
.build();
// 3. 包配置
PackageConfig pc = new PackageConfig.Builder()
.parent("com.example") // 父包名,如 com.example
.moduleName("system") // 模块名(可选),会作为子包:com.example.system
.entity("entity")
.mapper("mapper")
.service("service")
.serviceImpl("service.impl")
.controller("controller")
.build();
// 4. 策略配置
StrategyConfig sc = new StrategyConfig.Builder()
.addInclude("sys_user", "sys_role", "sys_menu") // 指定要生成的表名(支持通配符如 "sys_%", 或留空全表)
.addTablePrefix("sys_") // 表前缀,生成时会自动去除(如 sys_user → User)
.entityBuilder()
.enableLombok() // 使用 Lombok(需额外加 lombok 依赖)
.naming(NamingStrategy.underline_to_camel) // 数据库下划线转驼峰
.columnNaming(NamingStrategy.underline_to_camel)
.build()
.mapperBuilder()
.enableMapperAnnotation() // 加 @Mapper 注解
.build()
.serviceBuilder()
.formatServiceFileName("%sService") // 接口名格式:UserService
.formatServiceImplFileName("%sServiceImpl")
.build()
.controllerBuilder()
.enableRestStyle() // 生成 @RestController
.enableHyphenStyle() // URL 路径用中划线(如 /user-info)
.build();
// 5. 执行生成
new AutoGenerator(dsc)
.globalConfig(gc)
.packageConfig(pc)
.strategyConfig(sc)
.execute();
}
}
运行这个 main 方法,就会在 src/main/java/com/example/system/... 下生成:
-
entity/User.java(含@Data,@TableName("sys_user")等) -
mapper/UserMapper.java(继承BaseMapper<user></user>) -
service/UserService.java和service/impl/UserServiceImpl.java -
controller/UserController.java(带 RESTful 接口)
快速替代方案:FastAutoGenerator(3.5.1+ 官方主推)
若你用的是 3.5.1 或更高版本,推荐改用更简洁的 FastAutoGenerator:
FastAutoGenerator.create(
"jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=Asia/Shanghai",
"root", "password")
.globalConfig(builder -> {
builder.author("YourName")
.outputDir("src/main/java");
})
.packageConfig(builder -> {
builder.parent("com.example")
.moduleName("system")
.entity("entity")
.mapper("mapper");
})
.strategyConfig(builder -> {
builder.addInclude("sys_user", "sys_role")
.addTablePrefix("sys_")
.entityBuilder().enableLombok()
.mapperBuilder().enableMapperAnnotation();
})
.execute();
语法更扁平,链式调用清晰,且内置默认模板更友好。
常见注意事项
- ✅ 确保数据库连接能通(URL、驱动、账号密码正确),推荐先用 Navicat 或 DBeaver 连一次验证。
- ✅ 表必须有主键(否则
@TableId可能缺失或报错)。 - ✅ 字段注释会被自动提取为
@ApiModelProperty(配合 Swagger)或@TableField(value = "...", comment = "..."),前提是数据库字段有 COMMENT。 - ✅ 若想生成 XML 文件(含
<select></select>标签等动态 SQL),需额外配置.templateEngine(new FreemarkerTemplateEngine())并引入 freemarker 依赖 —— 但 MP 默认用注解方式,一般不需要 XML。 - ❌ 不要对生成的代码做手动修改,否则下次覆盖会丢失;业务逻辑一律写在 Service 或 Controller 中。
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










