适用于IDEA项目结构
public class MybatisPlusGen {
public static void main(String[] args) {
String userDir = System.getProperty("user.dir");
String mainPath = String.join(File.separator, userDir, "src", "main");
String javaFilePath = String.join(File.separator, mainPath, "java");
String xmlFilePath = String.join(File.separator, mainPath, "resources", "mapper");
DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(
"jdbc:mysql://127.0.0.1:3306/halodb?serverTimezone=Asia/Shanghai",
"root",
"123456")
.build();
GlobalConfig globalConfig = new GlobalConfig.Builder()
.disableOpenDir()
.fileOverride()
.outputDir(javaFilePath)
.author("rufeng")
.dateType(DateType.TIME_PACK)
.commentDate("yyyy-MM-dd")
.build();
PackageConfig packageConfig = new PackageConfig.Builder()
.parent("com.rufeng.freemarker")
.entity("domain")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, xmlFilePath))
.build();
TemplateConfig templateConfig = new TemplateConfig.Builder()
.disable(TemplateType.CONTROLLER)
.build();
StrategyConfig strategyConfig = new StrategyConfig.Builder()
.entityBuilder()
.convertFileName(new MyConvertFileName(""))
.serviceBuilder()
.convertServiceFileName(new MyConvertFileName("Service"))
.convertServiceImplFileName(new MyConvertFileName("ServiceImpl"))
.mapperBuilder()
.convertMapperFileName(new MyConvertFileName("Mapper"))
.convertXmlFileName(new MyConvertFileName("Mapper"))
.build();
AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig)
.global(globalConfig)
.strategy(strategyConfig)
.packageInfo(packageConfig)
.template(templateConfig);
autoGenerator
.execute(new FreemarkerTemplateEngine());
}
}
class MyConvertFileName implements ConverterFileName {
private final String suffix;
public MyConvertFileName(String suffix) {
this.suffix = suffix;
}
@Override
public @org.jetbrains.annotations.NotNull String convert(String entityName) {
return entityName.substring(0, entityName.length() - 1) + this.suffix;
}
}
Q.E.D.