mybatis-plus代码生成器

1、AutoGenerator 简介

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
与 mybatis 中的 mybatis-generator-core 类似。

2、添加依赖
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.3.1.tmp</version>
</dependency>
<!-- 添加 模板引擎 依赖 -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.2</version>
</dependency>
3、代码分析
Step1:

创建一个 代码生成器。用于生成代码。
此处不用修改。

// Step1:代码生成器
AutoGenerator mpg = new AutoGenerator();
Step2:

配置全局信息。指定代码输出路径,以及包名、作者等信息。
此处按需添加,projectPath 需要修改,setAuthor 需要修改。

// Step2:全局配置
GlobalConfig gc = new GlobalConfig();
// 填写代码生成的目录(需要修改)
String projectPath = "E:\\myProject\\test\\test_mybatis_plus";
// 拼接出代码最终输出的目录
gc.setOutputDir(projectPath + "/src/main/java");
// 配置开发者信息(可选)(需要修改)
gc.setAuthor("lyh");
// 配置是否打开目录,false 为不打开(可选)
gc.setOpen(false);
// 实体属性 Swagger2 注解,添加 Swagger 依赖,开启 Swagger2 模式(可选)
//gc.setSwagger2(true);
// 重新生成文件时是否覆盖,false 表示不覆盖(可选)
gc.setFileOverride(false);
// 配置主键生成策略,此处为 ASSIGN_ID(可选)
gc.setIdType(IdType.ASSIGN_ID);
// 配置日期类型,此处为 ONLY_DATE(可选)
gc.setDateType(DateType.ONLY_DATE);
// 默认生成的 service 会有 I 前缀
gc.setServiceName("%sService");
mpg.setGlobalConfig(gc);
Step3:

配置数据源信息。用于指定 需要生成代码的 数据仓库、数据表。  
setUrl、setDriverName、setUsername、setPassword 均需修改。

// Step3:数据源配置(需要修改)
DataSourceConfig dsc = new DataSourceConfig();
// 配置数据库 url 地址
dsc.setUrl("jdbc:mysql://localhost:3306/testMyBatisPlus?useUnicode=true&characterEncoding=utf8");
// dsc.setSchemaName("testMyBatisPlus"); // 可以直接在 url 中指定数据库名
// 配置数据库驱动
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
// 配置数据库连接用户名
dsc.setUsername("root");
// 配置数据库连接密码
dsc.setPassword("123456");
mpg.setDataSource(dsc);
Step4:

配置包信息。  
setParent、setModuleName 均需修改。其余按需求修改。

// Step:4:包配置
PackageConfig pc = new PackageConfig();
// 配置父包名(需要修改)
pc.setParent("com.lyh.test");
// 配置模块名(需要修改)
pc.setModuleName("test_mybatis_plus");
// 配置 entity 包名
pc.setEntity("entity");
// 配置 mapper 包名
pc.setMapper("mapper");
// 配置 service 包名
pc.setService("service");
// 配置 controller 包名
pc.setController("controller");
mpg.setPackageInfo(pc);
Step5:

配置数据表映射信息。  
setInclude 需要修改,其余按实际开发修改。

// Step5:策略配置(数据库表配置)
StrategyConfig strategy = new StrategyConfig();
// 指定表名(可以同时操作多个表,使用 , 隔开)(需要修改)
strategy.setInclude("test_mybatis_plus_user");
// 配置数据表与实体类名之间映射的策略
strategy.setNaming(NamingStrategy.underline_to_camel);
// 配置数据表的字段与实体类的属性名之间映射的策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 配置 lombok 模式
strategy.setEntityLombokModel(true);
// 配置 rest 风格的控制器(@RestController)
strategy.setRestControllerStyle(true);
// 配置驼峰转连字符
strategy.setControllerMappingHyphenStyle(true);
// 配置表前缀,生成实体时去除表前缀
// 此处的表名为 test_mybatis_plus_user,模块名为 test_mybatis_plus,去除前缀后剩下为 user。
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
Step6:

执行代码生成操作。
此处不用修改。

// Step6:执行代码生成操作
mpg.execute();

完整代码:

package com.test.test_mybatis_plus;

import com.baomidou.mybatisplus.annotation.IdType;
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.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;

public class TestAutoGenerate {
   @Test
   public void autoGenerate() {
       // Step1:代码生成器
       AutoGenerator mpg = new AutoGenerator();

       // Step2:全局配置
       GlobalConfig gc = new GlobalConfig();
       // 填写代码生成的目录(需要修改)
       String projectPath = "E:\\myProject\\test\\test_mybatis_plus";
       // 拼接出代码最终输出的目录
       gc.setOutputDir(projectPath + "/src/main/java");
       // 配置开发者信息(可选)(需要修改)
       gc.setAuthor("lyh");
       // 配置是否打开目录,false 为不打开(可选)
       gc.setOpen(false);
       // 实体属性 Swagger2 注解,添加 Swagger 依赖,开启 Swagger2 模式(可选)
       //gc.setSwagger2(true);
       // 重新生成文件时是否覆盖,false 表示不覆盖(可选)
       gc.setFileOverride(false);
       // 配置主键生成策略,此处为 ASSIGN_ID(可选)
       gc.setIdType(IdType.ASSIGN_ID);
       // 配置日期类型,此处为 ONLY_DATE(可选)
       gc.setDateType(DateType.ONLY_DATE);
       // 默认生成的 service 会有 I 前缀
       gc.setServiceName("%sService");
       mpg.setGlobalConfig(gc);

       // Step3:数据源配置(需要修改)
       DataSourceConfig dsc = new DataSourceConfig();
       // 配置数据库 url 地址
       dsc.setUrl("jdbc:mysql://localhost:3306/testMyBatisPlus?useUnicode=true&characterEncoding=utf8");
       // dsc.setSchemaName("testMyBatisPlus"); // 可以直接在 url 中指定数据库名
       // 配置数据库驱动
       dsc.setDriverName("com.mysql.cj.jdbc.Driver");
       // 配置数据库连接用户名
       dsc.setUsername("root");
       // 配置数据库连接密码
       dsc.setPassword("123456");
       mpg.setDataSource(dsc);

       // Step:4:包配置
       PackageConfig pc = new PackageConfig();
       // 配置父包名(需要修改)
       pc.setParent("com.lyh.test");
       // 配置模块名(需要修改)
       pc.setModuleName("test_mybatis_plus");
       // 配置 entity 包名
       pc.setEntity("entity");
       // 配置 mapper 包名
       pc.setMapper("mapper");
       // 配置 service 包名
       pc.setService("service");
       // 配置 controller 包名
       pc.setController("controller");
       mpg.setPackageInfo(pc);

       // Step5:策略配置(数据库表配置)
       StrategyConfig strategy = new StrategyConfig();
       // 指定表名(可以同时操作多个表,使用 , 隔开)(需要修改)
       strategy.setInclude("test_mybatis_plus_user");
       // 配置数据表与实体类名之间映射的策略
       strategy.setNaming(NamingStrategy.underline_to_camel);
       // 配置数据表的字段与实体类的属性名之间映射的策略
       strategy.setColumnNaming(NamingStrategy.underline_to_camel);
       // 配置 lombok 模式
       strategy.setEntityLombokModel(true);
       // 配置 rest 风格的控制器(@RestController)
       strategy.setRestControllerStyle(true);
       // 配置驼峰转连字符
       strategy.setControllerMappingHyphenStyle(true);
       // 配置表前缀,生成实体时去除表前缀
       // 此处的表名为 test_mybatis_plus_user,模块名为 test_mybatis_plus,去除前缀后剩下为 user。
       strategy.setTablePrefix(pc.getModuleName() + "_");
       mpg.setStrategy(strategy);

       // Step6:执行代码生成操作
       mpg.execute();
   }
}
4、生成效果
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容