Mybatis Plus 代码生成器
TIP
MyBatis-Plus 的代码生成器可以根据数据库表结构自动生成 Entity、Mapper、Service、Controller 等代码,大幅提升开发效率。
引入依赖
xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>配置生成器
java
public class CodeGenerator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/demo", "root", "123456")
// 全局配置
.globalConfig(builder -> {
builder.author("开发者") // 作者
.outputDir(System.getProperty("user.dir") + "/src/main/java")
.commentDate("yyyy-MM-dd")
.enableSwagger() // 启用 Swagger
.disableOpenDir(); // 生成后不打开目录
})
// 包配置
.packageConfig(builder -> {
builder.parent("com.example")
.entity("entity")
.mapper("mapper")
.service("service")
.serviceImpl("service.impl")
.controller("controller");
})
// 策略配置
.strategyConfig(builder -> {
builder.addInclude("user", "order", "product") // 表名
.addTablePrefix("t_", "c_") // 表前缀
// Entity 策略
.entityBuilder()
.enableLombok() // Lombok 注解
.enableTableFieldAnnotation() // @TableField
// Controller 策略
.controllerBuilder()
.enableRestStyle() // @RestController
// Service 策略
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl");
})
.execute();
}
}生成的结构
运行生成器后,自动创建以下文件:
src/main/java/com/example
├── entity
│ ├── User.java
│ ├── Order.java
│ └── Product.java
├── mapper
│ ├── UserMapper.java
│ ├── OrderMapper.java
│ └── ProductMapper.java
├── service
│ ├── UserService.java
│ ├── OrderService.java
│ └── ProductService.java
│ └── impl
│ ├── UserServiceImpl.java
│ ├── OrderServiceImpl.java
│ └── ProductServiceImpl.java
└── controller
├── UserController.java
├── OrderController.java
└── ProductController.java自定义模板
可以在 resources/templates/ 下放置自定义模板覆盖默认模板:
java
.strategyConfig(builder ->
builder
.entityBuilder()
.template("/templates/entity.java.vm") // 自定义 Entity 模板
)TIP
代码生成器适用于项目初期快速搭建。项目中后期建议手动维护或增量生成,避免覆盖已有修改。