代码生成器

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.example.shop.entity.BaseEntity;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class AutoCode {
    public static void main(String[] args) {
        AutoEntity auto = new AutoEntity();
        auto.setUrl("jdbc:mysql://localhost:3306/shop?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC");
        auto.setUsername("root");
        auto.setPassword("root");
        auto.setOutPutDir("E:\\MyProject\\shop\\shop-parent\\service\\service_user\\src\\main\\java");
        auto.setParent("com.example.shop");
        auto.setModuleName("user");
        auto.setMapperXmlUrl("E:\\MyProject\\shop\\shop-parent\\service\\service_user\\src\\main\\resources\\mapper");
        auto.setTableName("user");
        auto.setTablePrefix("");
        auto.setIsController(false);
        auto.setIsService(false);
        auto.setIsServiceImpl(false);
        auto.setIsMapper(false);
        auto.setIsMapperXml(false);
        auto.setIsEntity(false);

        FastAutoGenerator.create(auto.getUrl(), auto.getUsername(), auto.getPassword())
                .globalConfig(builder -> {
                    builder.author("yangyaobo") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(auto.getOutPutDir()); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent(auto.getParent()); // 设置父包名
                    if (!StringUtils.isEmpty(auto.getModuleName()))
                        builder.moduleName(auto.getModuleName()); // 设置父包模块名
//                    builder.entity("");//实体类包位置,默认entity
//                    builder.service("");//service包位置,默认service
//                    builder.serviceImpl("");//serviceImpl包位置,默认serviceImpl
//                    builder.mapper("");//mapper包位置,默认mapper
                    if (!StringUtils.isEmpty(auto.getMapperXmlUrl()))
                        builder.pathInfo(Collections.singletonMap(OutputFile.mapperXml, auto.getMapperXmlUrl())); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(getTables(auto.getTableName())) // 设置需要生成的表名
                            .addTablePrefix(auto.getTablePrefix()); // 设置过滤表前缀

                    builder.entityBuilder()
                            .superClass(BaseEntity.class)//父类
                            .disableSerialVersionUID()//生成 serialVersionUID
                            .enableLombok()//开启 lombok 模型
                            .enableTableFieldAnnotation()//开启生成实体时生成字段注解
                            .addIgnoreColumns("create_time", "update_time", "create_by", "update_by", "del_flag", "version");//添加忽略字段

                    builder.controllerBuilder().enableRestStyle();//开启生成@RestController 控制器

                    builder.serviceBuilder().formatServiceFileName("%sService");//格式化 service 接口文件名称,去掉前面的I

                })
                .templateConfig(builder -> {
                    if (auto.getIsController()) {
                        System.out.println(1);
                        builder.disable(TemplateType.CONTROLLER);//禁用模板
                    }
                    if (auto.getIsService()) {
                        System.out.println(2);
                        builder.disable(TemplateType.SERVICE);//禁用模板
                    }
                    if (auto.getIsServiceImpl()) {
                        System.out.println(3);
                        builder.disable(TemplateType.SERVICEIMPL);//禁用模板
                    }
                    if (auto.getIsMapper()) {
                        System.out.println(4);
                        builder.disable(TemplateType.MAPPER);//禁用模板
                    }
                    if (auto.getIsMapperXml()) {
                        System.out.println(5);
                        builder.disable(TemplateType.XML);//禁用模板
                    }
                    if (auto.getIsEntity()) {
                        System.out.println(6);
                        builder.disable(TemplateType.ENTITY);//禁用模板
                    }
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }

    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }
}

@Data
class AutoEntity {
    private String Url;
    private String username;
    private String password;
    private String outPutDir;
    private String parent;
    private String moduleName;
    private String mapperXmlUrl;
    private String tableName;
    private String tablePrefix;
    private Boolean isController;
    private Boolean isServiceImpl;
    private Boolean isService;
    private Boolean isMapper;
    private Boolean isMapperXml;
    private Boolean isEntity;
}

依赖

<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.5.1</version>
</dependency>

<!--逆向工程需要模板引擎-->
<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.28</version>
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-generator</artifactId>
	<version>3.5.1</version>
</dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值