适用于IDEA项目结构
mybatisgen.png

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.


一切很好,不缺烦恼。