MyBatis-Plus 代码生成器(AutoGenerator)是 MyBatis-Plus 提供的一个强大的代码生成工具,可以快速针对数据库表内字段信息生成 Entity、Mapper、Service、Controller 等各层代码,极大提高开发效率。

官网地址:代码生成器 | MyBatis-Plus

引入依赖:

<!-- 只用swagger注解, 缩小依赖的lib包 -->
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>1.5.20</version>
</dependency>
<!--注意 SpringBoot3的依赖与Spring Boot2的MybatisPlus并不相同 错用会报错-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.5</version>
</dependency>
<!-- 自动扫描代码生成 OpenAPI 规范文档 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>
<!-- freemarker,作为代码生成器mapper文件的模板引擎使用(当然也可以使用velocity,二选一即可) -->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!-- 必须引入的两个依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.4.3.2</version>
</dependency>
<!-- MyBatis-Plus 代码生成器 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.12</version>
</dependency>
<!-- Druid依赖 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>
<!-- 数据库连接依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

 随后根据TODO的位置更改成自己的信息即可:

package com.xuecheng.generator;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.model.ClassAnnotationAttributes;
import org.apache.ibatis.annotations.Mapper;


import java.sql.Types;
import java.util.Collections;

public class MybatisPlusGenerator {

    // TODO 修改服务名以及数据表名
    private static final String SERVICE_NAME = "content";
    // TODO 数据库账号
    private static final String DATA_SOURCE_USER_NAME  = "root";
    // TODO 数据库密码
    private static final String DATA_SOURCE_PASSWORD  = "1234";

    /**
     * 实际使用版
     * Spring Boot项目生成全部表示例,有调整可以自己修改
     */
    public static void generator() {
        System.out.println("MyBatis-Plus代码生成器将生成的代码输出到" + (System.getProperty("user.dir")+"/src/main/java") + "目录下");
        // TODO 更改自己的 MySQL 数据库地址
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/" + SERVICE_NAME
                        + "?serverTimezone=UTC&useUnicode=true&useSSL=false&characterEncoding=utf8", DATA_SOURCE_USER_NAME, DATA_SOURCE_PASSWORD)
                .globalConfig(builder -> {
                    builder.outputDir((System.getProperty("user.dir")+"/src/main/java"))  // 指定输出目录
                            .disableOpenDir() // 生成后不打开文件夹
                            .author("eleven") // 设置作者
                            .enableSwagger(); // 开启 swagger 模式
                })
                .dataSourceConfig(builder ->
                        builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                            int typeCode = metaInfo.getJdbcType().TYPE_CODE;
                            if (typeCode == Types.SMALLINT) {
                                // 自定义类型转换
                                return DbColumnType.INTEGER; // 将数据库的SMALLINT映射为Java的Integer
                            }
                            return typeRegistry.getColumnType(metaInfo); // 其他类型按默认规则转换 
                        })
                )
                .packageConfig(builder -> {
                    builder.parent("cn.eleven") // 父包名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir")+"/src/main/resources/mapper")); // XML文件输出目录
                })
                .strategyConfig(builder -> {
                    builder.enableSkipView() // 跳过视图(不生成视图相关代码)
                            .entityBuilder().enableLombok(new ClassAnnotationAttributes("@Data","lombok.Data")) // 实体类使用Lombok的@Data注解
                            .mapperBuilder().mapperAnnotation(Mapper.class); // 为Mapper接口添加@Mapper注解
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker模板引擎
                .execute(); // 执行代码生成
    }

    public static void main(String[] args) {
        generator(); // 实际使用版
    }
}

MyBatis-Plus 支持多种模板引擎(如 FreemarkerVelocityBeetl),它们负责:

  • 定位模板文件​:从类路径(classpath)或指定目录中查找模板。
  • 绑定变量​:将数据库表结构、配置参数等注入模板。
  • 渲染输出​:生成最终的 Java、XML 等代码文件。

模板文件默认内置于生成器 JAR 包中,路径为:
com/baomidou/mybatisplus/generator/engine/templates/
包含以下关键模板:

- Entity.java.ftl          // 实体类模板
- Mapper.java.ftl          // Mapper接口模板
- Mapper.xml.ftl           // XML映射文件模板
- Service.java.ftl         // Service接口模板
- ServiceImpl.java.ftl     // Service实现类模板
- Controller.java.ftl      // Controller模板

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐