再使用mybatis-plus-generator 3.2.0 生成代码的时候,包设置为 :
PackageConfig()
.setModuleName(moduleName)
.setParent(PARENT_NAME)
.setService("api")
.setServiceImpl("service")
.setController("controller")
.setEntity("model")
.setMapper("dao");
生成的目录结构为:
其中account是我生成的代码模块,我想要的效果是 .setMapper("dao"); 之后,只会生成一个 dao 文件夹,下面有 accountMapper.java (interface)
现在为什么还会出现一个mapper文件夹呢?
完整代码:
public boolean generate(GenerateConfig config) {
this.PARENT_NAME = config.getPackageName();
this.AUTHOR = config.getAuthor();
autoGenerator(config.getModuleName(),config.getTableName(),null);
return true;
}
public void autoGenerator(String moduleName, String tableName, String tablePrefix) {
new AutoGenerator()
.setGlobalConfig(getGlobalConfig())
.setDataSource(getDataSourceConfig())
.setPackageInfo(getPackageConfig(moduleName))
.setStrategy(getStrategyConfig(tableName, tablePrefix))
.setCfg(getInjectionConfig(moduleName))
.setTemplate(getTemplateConfig())
.execute();
}
private String getDateTime() {
LocalDateTime localDate = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return localDate.format(formatter);
}
private InjectionConfig getInjectionConfig(final String moduleName) {
return new InjectionConfig() {
@Override
public void initMap() {
Map map = new HashMap();
map.put("dateTime", getDateTime());
setMap(map);
final String projectPath = System.getProperty("user.dir");
List<FileOutConfig> fileOutConfigList = new ArrayList<FileOutConfig>();
// 自定义配置会被优先输出
fileOutConfigList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名,如果entity设置了前后缀,此次注意xml的名称也会跟着发生变化
return projectPath + "/src/main/resources/mapper/" +
moduleName + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
setFileOutConfigList(fileOutConfigList);
}
};
}
private StrategyConfig getStrategyConfig(String tableName, String tablePrefix) {
return new StrategyConfig()
.setNaming(NamingStrategy.underline_to_camel)
.setColumnNaming(NamingStrategy.underline_to_camel)
.setInclude(tableName)
.setRestControllerStyle(REST_CONTROLLER_STYLE)
.setEntityBuilderModel(true)
.setControllerMappingHyphenStyle(true)
.entityTableFieldAnnotationEnable(true)
.setTablePrefix(tablePrefix + "_");
}
private PackageConfig getPackageConfig(String moduleName) {
return new PackageConfig()
.setModuleName(moduleName)
.setParent(PARENT_NAME)
.setService("api")
.setServiceImpl("service")
.setController("controller")
.setEntity("model")
.setMapper("dao");
}
private DataSourceConfig getDataSourceConfig() {
return new DataSourceConfig()
.setUrl(JDBC_MYSQL_URL)
.setDriverName(JDBC_DRIVER_NAME)
.setUsername(JDBC_USERNAME)
.setPassword(JDBC_PASSWORD);
}
private GlobalConfig getGlobalConfig() {
String projectPath = System.getProperty("user.dir");
String filePath = projectPath + "/" + MODULAR_NAME + SRC_MAIN_JAVA;
if (PlatformUtil.isWindows()) {
filePath = filePath.replaceAll("/+|\\\\+", "\\\\");
} else {
filePath = filePath.replaceAll("/+|\\\\+", "/");
}
return new GlobalConfig()
.setOutputDir(filePath)
.setDateType(DateType.ONLY_DATE)
.setIdType(IdType.UUID)
.setAuthor(AUTHOR)
.setBaseColumnList(true)
.setSwagger2(true)
.setEnableCache(false)
.setBaseResultMap(true)
.setOpen(false);
}
private TemplateConfig getTemplateConfig() {
return new TemplateConfig()
.setController("/templates/generator/controller.java.vm")
.setService("/templates/generator/service.java.vm")
.setServiceImpl("/templates/generator/serviceImpl.java.vm")
.setEntity("/templates/generator/model.java.vm")
.setMapper("/templates/generator/dao.java.vm")
.setXml("/templates/generator/mapper.xml.vm");
}
generate() 为入口