1.引入pom依赖
<!--我的是springCloud项目,这个放在了fast-service的pom文件中-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.4</version>
</dependency>
<!--上边的依赖包含这个生成器,若只是想用代码生成,引入这个包就行-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!--我的是springCloud项目,这个放在了fast-service的pom文件中,MyBatis-Plus 支持 Velocity(默认)-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
或者
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.29</version>
</dependency>
2.代码配置类
/**
* mybatis-plus-generator: 3.3.2
* freemarker: 2.3.29或2.3.28
*/
public class FastGenerator {
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
//只用写到java目录
gc.setOutputDir(projectPath + "/fast-boot/src/main/java");
gc.setAuthor("hujunwei");
//生成后是否打开资源管理器
gc.setOpen(false);
//重新生成文件时是否覆盖
gc.setFileOverride(true);
//类名生成规则,去掉Service接口的首字母
gc.setServiceName("%sService");
gc.setControllerName("%sController");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
//主键策略
gc.setIdType(IdType.ASSIGN_ID);
//定义生成的实体类中日期类型
gc.setDateType(DateType.TIME_PACK);
//开启swagger2模式
gc.setSwagger2(true);
//包路径配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.fast");
packageConfig.setEntity("entity");
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
packageConfig.setMapper("mapper");
packageConfig.setXml("mapper.xml");
mpg.setPackageInfo(packageConfig);
mpg.setGlobalConfig(gc);
// Mysql数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://192.168.0.102:3306/fast-boot?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("hujunwei");
dsc.setDbType(DbType.MYSQL);
//Oracle数据源配置
// DataSourceConfig dsc2 = new DataSourceConfig();
// dsc.setUrl("jdbc:oracle:thin:@10.51.230.111:1521/orcl");
// dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
// dsc2.setUsername("root");
// dsc2.setPassword("hujunwei");
// dsc.setDbType(DbType.ORACLE);
mpg.setDataSource(dsc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
//对哪些表生成代码,多个用逗号隔开,把这句话注掉则默认生成所有表
strategy.setInclude("role");
//数据库表名转实体:下划线转驼峰
strategy.setNaming(NamingStrategy.underline_to_camel);
//数据库表字段名转实体:下划线转驼峰
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//生成实体时,去掉表前缀
strategy.setTablePrefix("fast_system_");
//lombok 模型 @Accessors(chain = true) setter链式操作
strategy.setEntityLombokModel(true);
//restful api风格控制器
strategy.setRestControllerStyle(true);
//url中驼峰转下划线
strategy.setControllerMappingHyphenStyle(true);
//设置自动填充字段
List<TableFill> tableFillList = new ArrayList<>();
tableFillList.add(new TableFill("update_by", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("update_time", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("create_by", FieldFill.INSERT));
tableFillList.add(new TableFill("create_time", FieldFill.INSERT));
tableFillList.add(new TableFill("status", FieldFill.INSERT));
tableFillList.add(new TableFill("del_flag", FieldFill.INSERT));
strategy.setTableFillList(tableFillList);
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
3.备用模板
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.ibeetl/beetl -->
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>3.1.3.RELEASE</version>
</dependency>