Skip to content

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

代码生成器适用于项目初期快速搭建。项目中后期建议手动维护或增量生成,避免覆盖已有修改。