該文件記錄在spring-boot下使用mybatis plus由數(shù)據(jù)庫(kù)的表自動(dòng)生成到項(xiàng)目中的相關(guān)代碼文件
- 模板引擎使用的是Freemarker
- 該文檔記錄的是xml文件生成在src.main.java下的相關(guān)文件夾中
pom文件:
代碼中的依賴(lài)包為最少依賴(lài)包
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
<groupId>xx.flower</groupId>
<artifactId>my_boot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.8.0-beta4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
</dependencies>
代碼內(nèi)容:
import com.baomidou.mybatisplus.annotation.FieldFill;
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.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.ArrayList;
import java.util.List;
public class MpGenerator {
public static void main(String[] args){
// 設(shè)置引用模板
AutoGenerator generator = new AutoGenerator();
generator.setTemplateEngine(new FreemarkerTemplateEngine());
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir("F:\\IdeaProjects\\my_boot\\src\\main\\java");
globalConfig.setAuthor("xx");
globalConfig.setOpen(false);
// 是否覆蓋同名文件,默認(rèn)是false
globalConfig.setFileOverride(false);
// 是否支持ActiveRecord特性诈悍,默認(rèn)false(不支持)
/*
在Mybatis-Plus中提供了ActiveRecord的模式,
支持 ActiveRecord 形式調(diào)用忍啸,
實(shí)體類(lèi)只需繼承 Model 類(lèi)即可實(shí)現(xiàn)基本 CRUD 操作潜圃,
簡(jiǎn)單來(lái)說(shuō)就是一個(gè)實(shí)體類(lèi)繼承Model類(lèi)胳蛮,
并通過(guò)注解與數(shù)據(jù)庫(kù)的表名進(jìn)行關(guān)聯(lián)甘桑,
這樣就可以通過(guò)實(shí)體類(lèi)直接進(jìn)行表的簡(jiǎn)單增刪改查操作绘证,
這樣也確實(shí)極大的方便了開(kāi)發(fā)人員缩抡。
*/
globalConfig.setActiveRecord(true);
// xml中的resultmap 默認(rèn)false
globalConfig.setBaseResultMap(true);
// xml中的columList---沒(méi)有默認(rèn)值
globalConfig.setBaseColumnList(true);
/* 自定義文件命名奠宜,注意%s會(huì)自動(dòng)填充表實(shí)體屬性 */
globalConfig.setMapperName("%sMapper");
globalConfig.setXmlName("%sMapper");
globalConfig.setServiceName("%sService");
globalConfig.setServiceImplName("%sServiceImpl");
globalConfig.setControllerName("%sController");
// 加載全局配置
generator.setGlobalConfig(globalConfig);
// 數(shù)據(jù)庫(kù)配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/test_xx?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("root");
generator.setDataSource(dataSourceConfig);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("test");
pc.setParent("xx.flower");
pc.setEntity("entity");
pc.setController("controller");
pc.setMapper("mapper");
pc.setService("service");
// 默認(rèn)在service路徑下的impl下,設(shè)個(gè)設(shè)置則可以指定其他路徑
//pc.setServiceImpl("service.impl");
// 默認(rèn)在mapper路徑下的xml瞻想,這個(gè)設(shè)置則可以指定其他路徑
//pc.setXml("mapper.xml");
generator.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
// 表前綴压真,多個(gè)英文逗號(hào)分割或者 new String[]{"",""}
strategy.setTablePrefix("user_");
// 表明生成策略
strategy.setNaming(NamingStrategy.underline_to_camel);
// 表明,多個(gè)英文逗號(hào)分割或者 new String[]{"",""}
strategy.setInclude("user_info");
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);// 駝峰轉(zhuǎn)連字符
strategy.setEntityTableFieldAnnotationEnable(true);// 是否生成實(shí)體時(shí)蘑险,生成字段注解
// 自己的父類(lèi)實(shí)體滴肿,沒(méi)有就不用設(shè)置
//strategy.setSuperEntityClass();
// 自己的父類(lèi)控制器,沒(méi)有就不用設(shè)置
//strategy.setSuperControllerClass();
// 字段自動(dòng)操作策略
List<TableFill> tableFillList = new ArrayList<>();
tableFillList.add(new TableFill("create_time", FieldFill.INSERT));
tableFillList.add(new TableFill("update_time", FieldFill.INSERT_UPDATE));
// 表字段與屬性映射關(guān)系
strategy.setTableFillList(tableFillList);
strategy.setEntitySerialVersionUID(true);
generator.setStrategy(strategy);
/*
* 1. 如果.xml文件是生成到Mapper類(lèi)下面的xml文件夾下佃迄,這個(gè)配置不需要泼差,如果配置了則不生成.xml文件了
* 2. 如果.xml文件不是默認(rèn)生成到Mapper類(lèi)下面的xml文件夾下,而是指定到某個(gè)路徑下呵俏,
* 則該配置需要配置tc.setXml(null)堆缘,如果不配置則Mapper類(lèi)下面的xml文件夾下還會(huì)同時(shí)生成一份默認(rèn)的。
*/
// TemplateConfig tc = new TemplateConfig();
// tc.setXml(null);// 這個(gè)標(biāo)注了則不生成XML文件了
// generator.setTemplate(tc);
// 注入配置柴信, 該配置不在代碼中配置出來(lái)的話(huà)套啤,則生該自動(dòng)生成的文件不會(huì)生成對(duì)應(yīng)的文件!!G甭佟萄涯!
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
generator.setCfg(cfg);
// 執(zhí)行mybatis plus自動(dòng)從表生成對(duì)應(yīng)一系列的文件
generator.execute();
}
}