AutoGenerator與MBG差別:
(1)、MP提供了大量自定義的設定,生成的代碼完全能夠滿足各類型的需求;
(2)、MP的代碼生生成器是基于Java代碼來生成。MBG基于xml檔案進行代碼生成;
Mybatis的代碼生成器生成:實體類、Mapper接口、Mapper映射檔案
AutoGenerator卻更加強大,可以生成service和controller,可以配置實體類是否支援AR等;
1、導入依賴:
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- sfl4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
2、編寫配置類:
@Test
public void testGenerator() {
//1. 全局配置
GlobalConfig config = new GlobalConfig();
config.setActiveRecord(true) // 是否支援AR模式
.setAuthor("weiyunhui") // 作者
.setOutputDir("D:\\xueyi\\mybatis\\spring-mybatisplus-02\\src\\main\\java") // 生成路徑
.setFileOverride(true) // 檔案覆寫
.setIdType(IdType.AUTO) // 主鍵政策
.setEnableCache(false) //是否開啟二級緩存
.setServiceName("%sService") // 設定生成的service接口的名字的首字母是否為I
// IEmployeeService
.setBaseResultMap(true)
.setBaseColumnList(true);
//2. 資料源配置
DataSourceConfig dsConfig = new DataSourceConfig();
dsConfig.setDbType(DbType.MYSQL) // 設定資料庫類型
.setDriverName("com.mysql.jdbc.Driver")
.setUrl("jdbc:mysql://localhost:3306/mplus")
.setUsername("root")
.setPassword("[email protected]");
//3. 政策配置
StrategyConfig stConfig = new StrategyConfig();
stConfig.setCapitalMode(true) //全局大寫命名
.setDbColumnUnderline(true) // 指定表名 字段名是否使用下劃線
.setNaming(NamingStrategy.underline_to_camel) // 資料庫表映射到實體的命名政策
.setTablePrefix("tab_")
.setInclude("tab_user"); // 生成的表
//4. 包名政策配置
PackageConfig pkConfig = new PackageConfig();
pkConfig.setParent("com.nn.mybatisplus")
.setMapper("mapper")
.setService("service")
.setController("controller")
.setEntity("beans")
.setXml("mapper");
//5. 整合配置
AutoGenerator ag = new AutoGenerator();
ag.setGlobalConfig(config)
.setDataSource(dsConfig)
.setStrategy(stConfig)
.setPackageInfo(pkConfig);
//6. 執行
ag.execute();
}
自動生成的service 繼承了IService,包含了很多常用方法:
public interface UserService extends IService<User> {
}