MyBatis-Plus代码生成器

  1. 引入pom文件
  <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-generator</artifactId>
      <version>3.3.2</version>
  </dependency>
  1. 代码生成器工具类
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author Jack
 * 配置详情参见
 * https://mp.baomidou.com/config/generator-config.html
 */
public class MysqlCodeGenerator {
    /**
     * 创建的表名
     */
    private static final String TABLE_NAMES = "meteorological_soil_data";

    /**
     * 文件夹名称
     */
    private static String FILE_NAMES = "meteorologicaldata";

    /**
     * 模块名称
     */
    private static String MOUDLES_NAMES = "meteorological-biz";

    /**
     * 项目目录相对路径
     */
    private static String PROJECT_PATH = System.getProperty("user.dir") + "\\" + MOUDLES_NAMES;

    /**
     * 项目目录绝对路径
     */
    public static void main(String[] args) {
        //1、全局配置
        GlobalConfig globalConfig = createGlobalConfig();
        //2、数据源配置
        DataSourceConfig dataSourceConfig = createDataSourceConfig();
        //3、包名策略配置
        PackageConfig packageConfig = createPackageConfig();
        //4、策略配置
        StrategyConfig strategyConfig = createStrategyConfig();
        //7、整合配置
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setGlobalConfig(globalConfig)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(packageConfig)
                .setTemplateEngine(new FreemarkerTemplateEngine());
        // 8、mapper设置
        InjectionConfig cfg = injectionConfig();
        autoGenerator.setCfg(cfg);

        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setXml(null);
        autoGenerator.setTemplate(templateConfig);

        //9、执行
        autoGenerator.execute();
    }

    private static InjectionConfig injectionConfig() {
        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        // 如果模板引擎是 freemarker
        String templatePath = "/templates/mapper.xml.ftl";
        // 如果模板引擎是 velocity
        //  String templatePath = "/templates/mapper.xml.vm";

        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置会被优先输出
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return PROJECT_PATH + "//src/main/resources/mapper/" + FILE_NAMES + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        return cfg;
    }

    private static StrategyConfig createStrategyConfig() {
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig
                // 开启全局大写命名
                .setCapitalMode(true)
                // 是否跳过视图
                .setSkipView(true)
                // 数据库表映射到实体的命名策略:下划线到驼峰的命名方式
                .setNaming(NamingStrategy.underline_to_camel)
                // 数据库表字段映射到实体的命名策略, 未指定按照 naming 执行
                .setColumnNaming(NamingStrategy.underline_to_camel)
                // 使用lombok
                .setEntityLombokModel(true)
                // 生成实体时,是否生成字段注解
                .setEntityTableFieldAnnotationEnable(true)
                // 生成 @RestController 控制器
                .setRestControllerStyle(true)
                // 驼峰转连字符
                .setControllerMappingHyphenStyle(true)
                // 逻辑删除属性名称
                .setLogicDeleteFieldName("deleted")
                // 激活进行sql模糊表名匹配,关闭之后likeTable与notLikeTable将失效,include和exclude将使用内存过滤
                .setEnableSqlFilter(true)
                .setInclude(TABLE_NAMES.split(","))
                // 需要排除的模糊匹配的表名,多个表名用逗号分割
                .setExclude();
        return strategyConfig;
    }

    private static PackageConfig createPackageConfig() {
        PackageConfig packageConfig = new PackageConfig();
        packageConfig
                // 设置包名的parent
                .setParent("com.ltd.cloud.meteorological.biz")
                .setModuleName(FILE_NAMES)
                .setEntity("entity.model")
                .setController("controller")
                .setService("repository")
                .setServiceImpl("repository.impl")
                .setMapper("dao.mapper");
        return packageConfig;
    }

    private static DataSourceConfig createDataSourceConfig() {

        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig
                // 数据库类型
                .setDbType(DbType.MYSQL)
                .setDriverName("com.mysql.cj.jdbc.Driver")
                .setUrl("jdbc:mysql://10.0.0.68:3306/meteorological?useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8")
                .setUsername("root")
                .setPassword("123456")
                // 数据库 schema name
                .setSchemaName("meteorological");
        return dataSourceConfig;
    }

    private static GlobalConfig createGlobalConfig() {
        //1、全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig
                // 生成文件的输出目录
                .setOutputDir(PROJECT_PATH + "/src/main/java")
                // 生成注释时的作者
                .setAuthor("你的姓名")
                // 生成后是否打开资源管理器
                .setOpen(false)
                // 重新生成时文件是否覆盖
                .setFileOverride(true)
                //实体属性 Swagger2 注解
                .setSwagger2(true)
                // 生成 resultMap
                .setBaseResultMap(true)
                // 在xml中生成基础列
                .setBaseColumnList(true)
                // 实体命名方式
                .setEntityName("%sDO")
                // controller命名方式
                .setControllerName("%sController")
                // 生成的service名称
                .setServiceName("%sRepository")
                // service impl命名方式
                .setServiceImplName("%sRepositoryImpl")
                // mapper命名方式
                .setMapperName("%sMapper");
        return globalConfig;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值