MybatisPlusGenerator代码自动生成

简介

MyBatis Plus Generator 可以生成 Controller,Service,Mapper,Entity,也支持自写 SQL 的 mapper

1. pom.xml中导入依赖

<!-- mysql数据库引擎 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.20</version>
</dependency>
<!-- mybits-plus依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>
<!-- mybits-plus自动生成依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.1</version>
</dependency>
<!-- lombok插件 -->
<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <version>1.16.10</version>
 </dependency>
<!-- swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>
<!-- swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
</dependency>

2.创建生成类

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.FileType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class MyBatisPlusGenerator {

  public static void main(String[] args) {
      //1. 全局配置
      GlobalConfig config = new GlobalConfig();
      String projectPath = System.getProperty("user.dir");
              // 作者
              config.setAuthor("lz")
              // 生成路径,最好使用绝对路径,window路径是不一样的
              // 文件存放位置,自定义
              .setOutputDir(projectPath + "/src/main/java")
              // 文件覆盖
              .setFileOverride(false)
              // 主键策略
              .setIdType(IdType.AUTO)
              // 指定生成日期类型
              .setDateType(DateType.TIME_PACK)
              // 设置生成的service接口的名字的首字母是否为I,默认Service是以I开头的
              .setServiceName("%sService")
              // 实体类结尾名称
              .setEntityName("%sDO")
              // 生成基本的resultMap
              .setBaseResultMap(true)
              // 不使用AR模式
              .setActiveRecord(false)
              // 生成基本的SQL片段
              .setBaseColumnList(true)
              // 实体属性 Swagger 注解
              .setSwagger2(true);

      //2. 数据源配置
      DataSourceConfig dsConfig = new DataSourceConfig();
      // 设置数据库类型
      dsConfig.setDbType(DbType.MYSQL)
              .setDriverName("com.mysql.cj.jdbc.Driver")
              .setUrl("jdbc:mysql://127.0.0.1:3306/数据库名称?useSSL=false")
              .setUsername("用户")
              .setPassword("密码");

      //3. 策略配置globalConfiguration中
      StrategyConfig stConfig = new StrategyConfig();
      //全局大写命名
      stConfig.setCapitalMode(true)
              // 数据库表映射到实体的命名策略
              .setNaming(NamingStrategy.underline_to_camel)
              // 使用lombok
              .setEntityLombokModel(true)
              //使用restcontroller注解
              .setRestControllerStyle(true)
              // 生成的表, 多个表以数组形式填写, 支持正则
              .setInclude("user");

      //4. 包名策略配置
      PackageConfig pkConfig = new PackageConfig();
      pkConfig.setParent("com.lz")
              .setEntity("model")
              .setMapper("mapper")
              .setService("service")
              .setServiceImpl("service.impl")
              .setController("controller");
      
      //5. 自定义配置
      // 自定义配置
      InjectionConfig cfg = new InjectionConfig() {
          @Override
          public void initMap() {
              // to do nothing
          }
      };
      // 模板引擎是 freemarker
      String templatePath = "/templates/mapper.xml.ftl";
      // 模板引擎是 velocity
      // String templatePath = "/templates/mapper.xml.vm";
      // 自定义输出配置
      List<FileOutConfig> focList = new ArrayList<>();
      // 自定义配置会被优先输出
      focList.add(new FileOutConfig(templatePath) {
          @Override
          public String outputFile(TableInfo tableInfo) {
              // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
              return projectPath + "/src/main/resources/mapper/"
                      + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
          }
      });
      cfg.setFileOutConfigList(focList);
      // 生成的文件只覆盖entity
      cfg.setFileCreate((configBuilder, fileType, filePath) -> {
          //如果是Entity则直接返回true表示写文件
          if (fileType == FileType.ENTITY) {
              return true;
          }
          //否则先判断文件是否存在
          File file = new File(filePath);
          boolean exist = file.exists();
          if (!exist) {
              file.getParentFile().mkdirs();
          }
          //文件不存在或者全局配置的fileOverride为true才写文件
          return !exist || configBuilder.getGlobalConfig().isFileOverride();
      });
      // 配置模板
      TemplateConfig templateConfig = new TemplateConfig();
      // 配置自定义输出模板
      //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
      // templateConfig.setEntity("templates/entity2.java");
      // templateConfig.setService("/templates/service.java");
      // templateConfig.setController();
      templateConfig.setXml(null);

      //6. 整合配置
      AutoGenerator ag = new AutoGenerator();
      ag.setGlobalConfig(config)
              .setDataSource(dsConfig)
              .setStrategy(stConfig)
              .setPackageInfo(pkConfig)
			  .setCfg(cfg)
       		  .setTemplate(templateConfig)
       		  .setTemplateEngine(new FreemarkerTemplateEngine());

      //7. 执行操作
      ag.execute();
      System.out.println("======= 代码自动生成完毕! ========");
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值