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();
}