本文目录导读:

MyBatis-Plus代码生成有多种方式,我为你详细介绍最常用的3种方法:
MyBatis-Plus 3.5.x 新版本(推荐)
添加依赖
<!-- Spring Boot 3.x -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
编写生成器代码
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import java.util.Collections;
public class CodeGenerator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/your_db", "root", "password")
.globalConfig(builder -> {
builder.author("YourName") // 设置作者
.outputDir("D://generator//"); // 输出目录
})
.packageConfig(builder -> {
builder.parent("com.example") // 父包名
.moduleName("system") // 模块名
.entity("entity")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.xml("mapper.xml")
.controller("controller");
})
.strategyConfig(builder -> {
builder.addInclude("user", "role", "permission") // 设置需要生成的表名
.addTablePrefix("t_", "sys_"); // 设置过滤表前缀
})
.templateEngine(new VelocityTemplateEngine()) // 使用Velocity引擎
.execute();
}
}
MyBatis-Plus 3.5.x 自定义模板配置
FastAutoGenerator.create(dataSourceConfig)
.globalConfig(builder -> {
builder.author("YourName")
.outputDir("D://generator//")
.enableSwagger() // 开启Swagger
.dateType(DateType.TIME_PACK) // 时间策略
.commentDate("yyyy-MM-dd");
})
.packageConfig(builder -> {
builder.parent("com.example")
.moduleName("system")
.entity("entity")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.xml("mapper.xml")
.controller("controller")
.pathInfo(Collections.singletonMap(OutputFile.xml, "D://generator//xml//")); // 自定义xml路径
})
.strategyConfig(builder -> {
builder.addInclude("user") // 表名
.addTablePrefix("t_")
// Entity 策略配置
.entityBuilder()
.enableLombok() // 开启Lombok
.enableTableFieldAnnotation() // 开启字段注解
.versionColumnName("version") // 乐观锁字段
.logicDeleteColumnName("deleted") // 逻辑删除字段
// Mapper 策略配置
.mapperBuilder()
.enableBaseResultMap() // 通用ResultMap
.enableBaseColumnList() // 通用ColumnList
// Service 策略配置
.serviceBuilder()
.formatServiceFileName("%sService") // 格式化Service名称
.formatServiceImplFileName("%sServiceImpl")
// Controller 策略配置
.controllerBuilder()
.enableHyphenStyle() // 启用驼峰转连字符
.enableRestStyle(); // 启用@RestController
})
.templateEngine(new VelocityTemplateEngine())
.execute();
传统代码生成器(旧版本兼容)
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class TraditionalGenerator {
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
// 1. 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("YourName");
gc.setOpen(false);
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
// 2. 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/your_db");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("password");
mpg.setDataSource(dsc);
// 3. 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("system");
pc.setParent("com.example");
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setController("controller");
mpg.setPackageInfo(pc);
// 4. 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("user", "role");
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true); // Lombok
strategy.setRestControllerStyle(true); // @RestController
strategy.setControllerMappingHyphenStyle(true);
// 5. 模板引擎
mpg.setTemplateEngine(new VelocityTemplateEngine());
mpg.execute();
}
}
运行方式
直接运行main方法
# 直接右键运行 CodeGenerator 类的 main 方法
使用Maven插件(可选)
<plugin>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator-maven-plugin</artifactId>
<version>3.5.5</version>
<configuration>
<configurationFile>src/main/resources/generator-config.properties</configurationFile>
</configuration>
</plugin>
生成结果示例
生成的代码结构:
D://generator//
├── java/
│ └── com/example/system/
│ ├── entity/
│ │ └── User.java
│ ├── mapper/
│ │ └── UserMapper.java
│ ├── service/
│ │ ├── UserService.java
│ │ └── impl/
│ │ └── UserServiceImpl.java
│ └── controller/
│ └── UserController.java
└── resources/
└── mapper/
└── UserMapper.xml
注意事项
- 版本选择:推荐使用3.5.5+版本
- 数据库驱动:确保引入对应数据库的驱动
- 模板引擎:支持Velocity(默认)、Freemarker、Beetl
- 自定义模板:可在resources/templates/目录下自定义模板
- 执行顺序:先创建好数据库表,再运行生成器
这样就能快速生成完整的CRUD代码了,包括Controller、Service、Mapper、Entity和XML文件。