首先,从AutoGenerator类的execute方法进入
/**
* 生成代码
*/
public void execute() {
logger.debug("==========================准备生成文件...==========================");
// 初始化配置
if (null == config) {
config = new ConfigBuilder(packageInfo, dataSource, strategy, template, globalConfig);
if (null != injectionConfig) {
injectionConfig.setConfig(config);
}
}
if (null == templateEngine) {
// 为了兼容之前逻辑,采用 Velocity 引擎 【 默认 】
templateEngine = new VelocityTemplateEngine();
}
// 模板引擎初始化执行文件输出
templateEngine.init(this.pretreatmentConfigBuilder(config)).mkdirs().batchOutput().open();
logger.debug("==========================文件生成完成!!!==========================");
}
非常明显,首先初始化配置,原有的配置。包括:packageInfo, dataSource, strategy, template, globalConfig
再则是初始化自定义的配置,在injectionConfig中,然后是创建目录,再者是生成文件输出。
非常清洗的整个生成流程
在对应的生成包中存在已经定义好的通用模板,分别对应生成器支持的三种模板
在com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine#getObjectMap中存储对对象可以在,对应的模板文件中取出,如:在controller.java.ftl中取出${date}