1. 程式人生 > 其它 >mybatisplus之程式碼生成器

mybatisplus之程式碼生成器

先建立一個專案:

  

引入web依賴:

GeneratorApp類 

  內容:

import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.po.LikeTable;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;
import java.util.List;

public class GeneratorApp {

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");
//設定作者
gc.setAuthor("jobob");
//程式碼生成是不是要開啟所在資料夾
gc.setOpen(false);
//生成Swagger2註解
gc.setSwagger2(true);
//會在mapper.xml生成一個基礎的<resultMap>對映所有的欄位
gc.setBaseResultMap(true);
//同文件生成覆蓋
gc.setFileOverride(true);
//生成時間
gc.setDateType(DateType.ONLY_DATE);
//實體類:直接用表名 %s=表名
gc.setEntityName("%s");
//mapper介面名
gc.setMapperName("%sMapper");
//mapper.xml檔名
gc.setXmlName("%sMapper");
//業務邏輯類名
gc.setServiceName("%sService");
//業務邏輯類實現類名
gc.setServiceName("%sImplService");
//將全域性配置設定到AutoGenerator
mpg.setGlobalConfig(gc);


//資料來源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/qxgl?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
mpg.setDataSource(dsc);

//包配置
PackageConfig pc = new PackageConfig();
//模組名
pc.setModuleName("sys");
//包名
pc.setParent("com.dmsc.springboot.generator");
//完整的報名com.dmsc.springboot.generator.sys
mpg.setPackageInfo(pc);



// 自定義配置
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/" + pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});

cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);

// 配置模板
TemplateConfig templateConfig = new TemplateConfig();


templateConfig.setXml(null);
mpg.setTemplate(templateConfig);

//策略配置
StrategyConfig strategy = new StrategyConfig();
//表名胡生成策略:下劃線轉駝峰 pms_product--PmsProoduct
strategy.setNaming(NamingStrategy.underline_to_camel);
//列名的生成策略:下劃線轉駝峰last_name -- lastName
strategy.setColumnNaming(NamingStrategy.underline_to_camel);

//strategy.setSuperEntityClass("你自己的父親實體,沒有就不用設定");
//strategy.setEntityLombokModel(true);
//在controller類上是否生成@RestController
strategy.setRestControllerStyle(true);
//公共父類
//strategy.setSuperControllerClass("你自己的父類控制器,沒有就不用設定");
//寫於父類中的公共欄位
// strategy.setSuperEntityColumns("id");
//要生成的表名 多個用逗號分隔
//strategy.setInclude("");
//按字首生成表
strategy.setLikeTable(new LikeTable("sys_"));
//駝峰轉字元 比如 pms_product ->controller @RequestMapping("/pms/pmsProduct") 按前端生成表
strategy.setControllerMappingHyphenStyle(true);
//設定表替換字首
strategy.setTablePrefix("sys_");
mpg.setStrategy(strategy);
//進行生成
mpg.execute();
}
}

其中生成Swagger2和Lombok時候需要在pom檔案進行配置否者報錯:
  
//生成Swagger2註解
gc.setSwagger2(true);
//生成Lombok註解
strategy.setEntityLombokModel(true);

pom依賴如下:
  
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<swagger2.version>2.9.2</swagger2.version>
<swagger-model.version>1.6.0</swagger-model.version>
<swagger-annotations.version>1.6.0</swagger-annotations.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--程式碼生成器的依賴-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>

<!--velocity模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger2.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>${swagger-model.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger-annotations.version}</version>
</dependency>
<!--lombok依賴-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>

執行就可以使用了。

本文來自部落格園,作者:我是一個小倉鼠,轉載請註明原文連結:https://www.cnblogs.com/yongyuankuaile/p/15590559.html