MyBatis Plus中代碼生成器使用詳解
按照官網(wǎng)上實例嘗試了一下,感覺MyBatis plus中代碼生成器還是很強大的,以下是測試的總結(jié):
使用MybatisPlus的主要依賴
引入plus依賴(苞米豆)
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency>
生成器依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.1.1</version> </dependency>
模板依賴
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version> </dependency>
測試的pom依賴(也有我測試別東西的依賴,多余的請忽略)
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.wy</groupId> <artifactId>testpuls</artifactId> <version>0.0.1-SNAPSHOT</version> <name>testpuls</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.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> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.7.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> </dependency> <dependency> <groupId>com.capgemini.mrchecker</groupId> <artifactId>mrchecker-core-module</artifactId> <version>4.12.1.1</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-spring-service-connector</artifactId> <version>2.0.4.RELEASE</version> </dependency> <dependency> <groupId>com.capgemini.mrchecker</groupId> <artifactId>mrchecker-core-module</artifactId> <version>4.12.1.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
代碼生成器類
package com.wy.testpuls.util;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class MyGenerator {
public static String scanner(String someThing) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("請輸入" + someThing + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String sc = scanner.next();
if (StringUtils.isNotEmpty(sc)) {
return sc;
}
}
throw new MybatisPlusException("請輸入正確的" + someThing + "!");
}
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("山石");
gc.setOpen(false);
mpg.setGlobalConfig(gc);
// 數(shù)據(jù)源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("admin");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName(scanner("請輸入你的包名"));
pc.setParent("com.wy");//你哪個父目錄下創(chuàng)建包
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<>();
// 自定義配置會被優(yōu)先輸出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定義輸出文件名 , 如果你 Entity 設置了前后綴、此處注意 xml 的名稱會跟著發(fā)生變化??!
return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
// 配置自定義輸出模板
//指定自定義模板路徑,注意不要帶上.ftl/.vm, 會根據(jù)使用的模板引擎自動識別
// templateConfig.setEntity("templates/entity2.java");
// templateConfig.setService();
// templateConfig.setController();
templateConfig.setXml(null);
mpg.setTemplate(templateConfig);
// 策略配置,數(shù)據(jù)庫表配置
StrategyConfig strategy = new StrategyConfig();
//數(shù)據(jù)庫表映射到實體的命名策略
strategy.setNaming(NamingStrategy.underline_to_camel);
//數(shù)據(jù)庫表字段映射到實體類的命名策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//自定義繼承entity類,添加這一個會在生成實體類的時候繼承entity
//strategy.setSuperEntityClass("com.wy.testCodeGenerator.entity");
//實體是否為lombok模型
strategy.setEntityLombokModel(true);
//生成@RestController控制器
strategy.setRestControllerStyle(true);
//是否繼承controller
// strategy.setSuperControllerClass("com.wy.testCodeGenerator.controller");
strategy.setInclude(scanner("表名,多個英文逗號分割").split(","));
strategy.setSuperEntityColumns("id");
//駝峰轉(zhuǎn)連字符串
strategy.setControllerMappingHyphenStyle(true);
//表前綴
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
注意:測試時輸入的表名必須和數(shù)據(jù)庫中一致,區(qū)分大小寫。
疑問:生成的實體類當中沒有id。求解
到此這篇關于MyBatis Plus中代碼生成器使用詳解的文章就介紹到這了,更多相關MyBatis Plus代碼生成器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何使用BeanUtils.copyProperties進行對象之間的屬性賦值
這篇文章主要介紹了使用BeanUtils.copyProperties進行對象之間的屬性賦值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05
java訪問者模式的靜態(tài)動態(tài)及偽動態(tài)分派徹底理解
這篇文章主要為大家介紹了java訪問者模式的靜態(tài)動態(tài)及偽動態(tài)分派徹底理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Java List Object[]轉(zhuǎn)換成List T的實例
這篇文章主要介紹了Java List Object[]轉(zhuǎn)換成List T的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Maven方式構(gòu)建SpringBoot項目的實現(xiàn)步驟(圖文)
Maven是一個強大的項目管理工具,可以幫助您輕松地構(gòu)建和管理Spring Boot應用程序,本文主要介紹了Maven方式構(gòu)建SpringBoot項目的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2023-09-09
SpringBoot集成Quartz實現(xiàn)定時任務的方法
Quartz是一個定時任務框架,其他介紹網(wǎng)上也很詳盡。這里要介紹一下Quartz里的幾個非常核心的接口。通過實例代碼給大家講解SpringBoot集成Quartz實現(xiàn)定時任務的方法,感興趣的朋友一起看看吧2020-05-05

