1、比較MP 的代碼生成器 和 Mybatis MBG 代碼生成器:
MP 的代碼生成器都是基於 java 代碼來生成。MBG 基於 xml 文件進行代碼生成
MyBatis 的代碼生成器可生成: 實體類、Mapper 接口、Mapper 映射文件
MP 的代碼生成器可生成: 實體類(可以選擇是否支持 AR)、Mapper 接口、Mapper 映射文件、 Service 層、Controller 層.
2、表及字段命名策略選擇
在 MP 中,我們建議數據庫表名 和 表字段名采用駝峰命名方式, 如果采用下划 線命名方式 請開啟全局下划線開關,如果表名字段名命名方式不一致請注解指定,我 們建議最好保持一致。
3、如何使用代碼生成器
1)加入依賴信息
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency> <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 testGenerater(){
//1、全局策略配置
GlobalConfig config = new GlobalConfig();
config.setActiveRecord(true)
.setAuthor("houchen")
.setOutputDir("D:\\myworkspace\\mybatis-plus\\mp03\\src\\main\\java")
.setFileOverride(true) //多次生成是否文件覆蓋
.setIdType(IdType.AUTO)
.setServiceName("%sService") //設置生成的service接口的名字的首字母是否為I
.setBaseResultMap(true)
.setBaseColumnList(true); //生成基本的sql片段
//2、數據源配置
DataSourceConfig dsConfig = new DataSourceConfig();
dsConfig.setDbType(DbType.MYSQL)
.setDriverName("com.mysql.jdbc.Driver")
.setUrl("jdbc:mysql://localhost:3306/mybatis")
.setUsername("root")
.setPassword("houchen");
//3、策略配置
StrategyConfig sconfig = new StrategyConfig();
sconfig.setCapitalMode(true) //開啟全局大寫命名
.setDbColumnUnderline(true) //指定表名 字段名是否設置下划線
.setNaming(NamingStrategy.underline_to_camel) //下划線轉駝峰
.setTablePrefix("tbl_") //設置表名前綴
.setInclude("tbl_employee"); //生成使用的表
//4、包名配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.atguigu.mp")
.setController("controller")
.setService("service")
.setMapper("mapper")
.setEntity("beans")
.setXml("mapper"); // sql 映射文件
//5、整合所有的配置
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(config);
autoGenerator.setDataSource(dsConfig);
autoGenerator.setStrategy(sconfig);
autoGenerator.setPackageInfo(packageConfig);
//6、執行
autoGenerator.execute();
}