MyBatis-Plus怎么生成?

wen python案例 1

本文目录导读:

MyBatis-Plus怎么生成?

  1. MyBatis-Plus 3.5.x 新版本(推荐)
  2. MyBatis-Plus 3.5.x 自定义模板配置
  3. 传统代码生成器(旧版本兼容)
  4. 运行方式
  5. 生成结果示例
  6. 注意事项

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

注意事项

  1. 版本选择:推荐使用3.5.5+版本
  2. 数据库驱动:确保引入对应数据库的驱动
  3. 模板引擎:支持Velocity(默认)、Freemarker、Beetl
  4. 自定义模板:可在resources/templates/目录下自定义模板
  5. 执行顺序:先创建好数据库表,再运行生成器

这样就能快速生成完整的CRUD代码了,包括Controller、Service、Mapper、Entity和XML文件。

抱歉,评论功能暂时关闭!