myBatis plus 去除生成 controller

​ 由于我在网上没有找到答案, 所以分享给大家学习, 我也是第一次用 mybtis plus 的新生成器生成代码, 所以基础代码都是在官网复制所得. 在这里也支持大家在解决不了问题时, 可以试着看看源码中是不是有答案:

​ 使用 templateConfig 配置, 代码如(最)下:

/*
//以下是官方的案例代码, 不含禁止生成 controller
public static void main(String[] args) {
    FastAutoGenerator.create("url", "username", "password")
        .globalConfig(builder -> {
            builder.author("baomidou") // 设置作者
                .enableSwagger() // 开启 swagger 模式
                .fileOverride() // 覆盖已生成文件
                .outputDir("D://"); // 指定输出目录
        })
        .packageConfig(builder -> {
            builder.parent("com.baomidou.mybatisplus.samples.generator") // 设置父包名
                .moduleName("system") // 设置父包模块名
                .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://")); // 设置mapperXml生成路径
        })
        .strategyConfig(builder -> {
            builder.addInclude("t_simple") // 设置需要生成的表名
                .addTablePrefix("t_", "c_"); // 设置过滤表前缀
        })
        .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
        .execute();
}


//最后执行.execute()方法, 进去就能看到它不仅仅只有案例中给全局配置\包配置\策略配置和模板引擎的配置
public void execute() {
	(new  AutoGenerator(this.dataSourceConfigBuilder.build())).global(this.globalConfigBuilder.build()).packageInfo(this.packageConfigBuilder.build()).strategy(this.strategyConfigBuilder.build()).injection(this.injectionConfigBuilder.build()).template(this.templateConfigBuilder.build()).execute(this.templateEngine);
}
*/

//而官网给出的旧代码生成器案例, 里面就有关于模板配置的代码, 可以对生成的文件和代码做一些风格控制, 以下代码就是加上禁用生成 controller 的代码, 禁用 service 也一样
@Test
public void generate() {
    List<String> tables = new ArrayList<>();
    tables.add("product_type_info");
    tables.add("product_info");
    tables.add("product_attribute");

    FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/product_db?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8", "username", "password")
            .globalConfig(builder -> {
                builder.author("kent") // 设置作者
                        .enableSwagger() // 开启 swagger 模式
                        .disableOpenDir() //关闭生成目录, 默认打开
                        /*.fileOverride() // 覆盖已生成文件*/
                        .outputDir("E:\\Allprojects\\java\\gitpro\\salesystem\\productmanager\\src\\main\\java\\"); // 指定输出目录
            })
            .packageConfig(builder -> {
                builder.parent("com.kent") // 设置父包名
                        .moduleName("productmanager"); // 设置父包模块名
            })
            .strategyConfig(builder -> {
                builder.addInclude(tables).entityBuilder().enableLombok().serviceBuilder().formatServiceFileName("%sService") //默认前缀有个'I'
//                    builder.addInclude("product_type_info") // 设置需要生成的表名
                        /*.addTablePrefix("t_", "c_")*/; // 设置过滤表前缀
            })
            .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
            .templateConfig(builder -> {
                builder.disable(TemplateType.CONTROLLER); //不生成前端控制器, 其实还有另一种方案, 各位看了源码就知道了, 在AbstractTemplateEngine.outputController()方法中
            })
            .execute();
}
 

  

posted @ 2022-03-15 12:48  北极了啊  阅读(921)  评论(0编辑  收藏  举报