MyBatisPlus代码生成器


MyBatisPlus代码生成器


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


首先创建一个Maven工程,如果不会创建可以看我前面的文章。

添加依赖

MyBatis-Plus 从 ​​3.0.3​​ 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖,意思是如果使用3.0.3的版本,则不需要添加默认依赖:


  • 代码生成器依赖
    <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.2</version></dependency>
  • 添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。
    Velocity(默认):
    <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version></dependency>​Freemarker:
    <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version></dependency>​Beetl:
    <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetl</artifactId> <version>3.1.8.RELEASE</version></dependency>​注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。
    ​AutoGenerator generator = new AutoGenerator();// set freemarker engine generator.setTemplateEngine(new FreemarkerTemplateEngine());// set beetl engine generator.setTemplateEngine(new BeetlTemplateEngine());// set custom engine (reference class is your custom engine class) generator.setTemplateEngine(new CustomTemplateEngine());// other config...

编写配置

MyBatis-Plus 的代码生成器提供了大量的自定义参数供用户选择,能够满足绝大部分人的使用需求。


  • 创建CodeGenerator.类
    package com.w.mpdemo;import com.baomidou.mybatisplus.annotation.DbType;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 CodeGenerator { @Test public void run() { // 创建生成器 // 代码生成器 AutoGenerator ag = new AutoGenerator(); //全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); // 获取当前工作目录 gc.setAuthor("mouxiao") // 作者 .setOutputDir(projectPath + "/src/main/java") //设置生成路径 .setFileOverride(true) //设置文件是否覆盖 .setOpen(false) //设置生成后是否打开文件资源管理器 .setEntityName("%s") //实体命名方式 .setMapperName("%sMapper") //mapper 命名方式 .setServiceName("%sService") //service 命名方式 .setServiceImplName("%sServiceImpl") //service impl 命名方式 .setControllerName("%sController") //controller 命名方式 .setIdType(IdType.AUTO) //主键生成策略 .setDateType(DateType.ONLY_DATE); // 生成实体类中日期类型 // 数据源配置,配置数据库连接信息 DataSourceConfig dc = new DataSourceConfig(); dc.setUrl("jdbc:mysql://localhost:3306/guli?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8") .setDriverName("com.mysql.cj.jdbc.Driver") .setUsername("root") .setPassword("root") .setDbType(DbType.MYSQL); // 包配置,生成代码的包路径 PackageConfig pc = new PackageConfig(); pc //.setModuleName("service_edu") .setParent("com.w.mpdemo") .setController("controller") .setEntity("entity") .setService("service") .setMapper("mapper"); // 策略配置,通过该配置,可指定需要生成哪些表或者排除哪些表 StrategyConfig sc = new StrategyConfig(); sc.setInclude("edu_teacher") //需要包含的表名 .setNaming(NamingStrategy.underline_to_camel) //数据库表映射到实体的命名策略 .setTablePrefix("edu" + "_") //去掉表前缀; .setColumnNaming(NamingStrategy.underline_to_camel) //数据库表字段映射到实体的命名 .setEntityLombokModel(true) //lombok模型 .setRestControllerStyle(true) //restful api风格控制器 .setControllerMappingHyphenStyle(true); //url中驼峰转连字符 // 整合配置 ag.setGlobalConfig(gc) .setDataSource(dc) .setStrategy(sc) .setPackageInfo(pc) .execute(); }}
  • 运行
    控制台最后一行显示如下信息则生成成功:
    ​15:05:54.122 [main] DEBUG com.baomidou.mybatisplus.generator.AutoGenerator - ==========================文件生成完成!!!========================== ​​所有配置分为以下几类:



  • GlobalConfig:全局策略配置,具体请查看 全局策略配置
  • DataSourceConfig:数据源配置,通过该配置,指定需要生成代码的具体数据库,具体请查看 数据源配置
  • PackageConfig:包名配置,通过该配置,指定生成代码的包路径,具体请查看 包名配置
  • StrategyConfig:数据库表配置,通过该配置,可指定需要生成哪些表或者排除哪些表,具体请查看 数据库表配置


上述为基本使用配置,如需了解更多还是去官网学习