mybatisPlusGenerator 3.5.0 代码生成配置

这篇博客展示了如何使用MyBatis-Plus的AutoGenerator类来配置并生成代码,包括数据源配置、全局配置、包配置、策略配置和模板配置。通过设置表名、输出目录、作者信息等,可以快速自动生成Java项目中的实体类、控制器、服务、Mapper等文件,大大提高了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import priv.lsy.sys.entity.BaseEntity;

import java.io.File;


// 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
public class MybatisGenerator {

    public static void main(String[] args) {
        //表名,多个英文逗号分割
        String outputDir = System.getProperty("user.dir") + File.separator + "lsy-boot/lsy-code/src/main/java";

        String moduleName = "test";
        String packagePath = "priv.lsy";
        // 代码生成器
        new AutoGenerator(new DataSourceConfig
                .Builder("jdbc:mariadb://localhost:3306/lsy?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC", "lsy", "lsy")
                .build()
        )
                .global(new GlobalConfig.Builder()
                        .outputDir(outputDir)
                        .author("李思远")
                        .openDir(false)
                        .enableSwagger()
                        .dateType(DateType.ONLY_DATE)
                        .fileOverride()
                        .build()
                )
                .packageInfo(new PackageConfig.Builder()// 包配置
                        .parent(packagePath)
                        .moduleName(moduleName)
                        .controller("controller")
                        .entity("entity")
                        .service("service")
                        .serviceImpl("service.impl")
                        .mapper("persistent")
                        .xml("persistentXml")
                        .build()
                )
                .strategy(new StrategyConfig.Builder()// 策略配置
                        .enableCapitalMode()// 全局大写命名
                        .addExclude("databasechangelog", "databasechangeloglock")// 排除生成的表 sys_user
                        // .addInclude("sys_user") // 对应表 sys_user
                        // .addTablePrefix("sys_") // 表前缀
                        // .addFieldPrefix("tb_") // 字段前缀
                        .enableSkipView() //跳过视图

                        .controllerBuilder()
                        .enableRestStyle() //@RestController 注解
                        .enableHyphenStyle() //url中驼峰转连字符
                        // .superClass(IBaseController.class)
                        .formatFileName("%sController")

                        .entityBuilder()
                        .enableLombok()// lombok 模型
                        .enableChainModel() // 链式操作
                        .enableSerialVersionUID()
                        // .enableRemoveIsPrefix() 去掉字段前边的is
                        .superClass(BaseEntity.class)
                        .addSuperEntityColumns("id", "createDate", "createId", "updateDate", "updateId") // 自定义实体,公共字段
                        .naming(NamingStrategy.underline_to_camel)
                        .enableTableFieldAnnotation()

                        .serviceBuilder()
                        .formatServiceFileName("I%sService")
                        .formatServiceImplFileName("%sService")

                        .mapperBuilder()
                        .enableBaseResultMap()
                        .enableBaseColumnList()
                        .build()
                )
                .template(new TemplateConfig.Builder()
                        // .entity("templates\\entity\\entity.java.vm")
                        .controller("templates\\controller\\controller.java.vm")
                        .service(
                                "templates\\service\\service.java.vm",
                                "templates\\service\\impl\\serviceImpl.java.vm"
                        )
                        // .mapper("templates\\persistent\\mapper.java.vm")
                        // .mapperXml("templates\\persistent\\xml\\mapper.xml.vm")
                        .build()
                )
                .execute();
    }

}

### MyBatis-Plus Generator 配置教程与示例 MyBatis-Plus 提供了一个强大的代码生成工具 `mybatis-plus-generator`,它可以根据数据库中的表结构自动生成 Java 实体类、Mapper 接口、Service 层以及 Controller 类等内容。这极大地提高了开发效率并减少了重复劳动。 #### Maven 依赖引入 为了使用 `mybatis-plus-generator`,需要在项目的 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.0</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.31</version> </dependency> ``` 这里需要注意的是,除了 `mybatis-plus-generator` 外,还需要引入模板引擎(如 FreeMarker 或 Velocity),以便支持代码生成过程中的模板渲染[^1]。 --- #### 基本配置示例 下面是一个完整的 `mybatis-plus-generator` 的配置示例,展示如何基于 MySQL 数据库生成代码: ```java package com.example.generator; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.GlobalConfig; import com.baomidou.mybatisplus.generator.config.PackageConfig; import com.baomidou.mybatisplus.generator.config.StrategyConfig; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; public class CodeGenerator { public static void main(String[] args) { // 创建代码生成器对象 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java") // 设置输出目录 .setAuthor("Your Name") // 设置作者名 .setOpen(false); // 是否打开输出目录 mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC") .setDriverName("com.mysql.cj.jdbc.Driver") .setUsername("root") .setPassword("password") .setDbType(DbType.MYSQL); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.example") // 父包名 .setModuleName(null) // 模块名(可选) .setEntity("entity") // Entity 存放路径 .setMapper("mapper") // Mapper 存放路径 .setService("service") // Service 存放路径 .setController("controller"); // Controller 存放路径 mpg.setPackageInfo(pc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel) // 表名生成策略:下划线转驼峰命名 .setColumnNaming(NamingStrategy.underline_to_camel) // 列名生成策略:下划线转驼峰命名 .setEntityLombokModel(true) // 使用 Lombok 注解简化实体类 .setRestControllerStyle(true) // 启用 RestController 风格 .setInclude("table_name_1", "table_name_2"); // 要生成的表名列表 mpg.setStrategy(strategy); // 执行生成 mpg.execute(); } } ``` 此代码片段展示了如何通过设置不同的配置来实现自动化代码生成功能。其中的关键部分包括全局配置 (`GlobalConfig`)、数据源配置 (`DataSourceConfig`)、包配置 (`PackageConfig`) 和策略配置 (`StrategyConfig`)。 --- #### 自定义模板 如果默认生成的代码无法满足需求,可以通过修改模板来自定义生成逻辑。例如,可以替换 Freemarker 默认模板文件夹下的 `.ftl` 文件,或者通过编程方式指定新的模板路径: ```java TemplateConfig templateConfig = new TemplateConfig(); templateConfig.setEntity("/templates/entity.java.ftl"); // 自定义实体类模板 mpg.setTemplate(templateConfig); ``` --- #### 运行效果 运行上述代码后,会在指定的输出目录下生成一系列文件,具体取决于所配置的模块和表名范围。这些文件通常包括但不限于: - **Entity**: 对应于数据库表的实体类。 - **Mapper**: 映射接口及其 XML 文件。 - **Service**: 定义业务层接口。 - **ServiceImpl**: 实现业务层接口的具体类。 - **Controller**: 控制器类,负责处理 HTTP 请求。 --- #### 注意事项 1. 如果使用的数据库驱动程序较新,则需确保其兼容性,并调整 JDBC URL 参数以匹配实际环境。 2. 当前版本号为 `3.5.0`,可根据实际情况选择其他稳定版本[^3]。 3. 若希望进一步提升用户体验,还可以尝试集成可视化界面工具 `mybatis-plus-generator-ui` 来完成更复杂的定制化需求[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li.siyuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值