zoukankan      html  css  js  c++  java
  • Mybatis-Plus自动生成代码的CodeGenerator代码

    官方地址:
    Mybatis-Plus:https://mp.baomidou.com/guide/generator.html

    pom中导入mybatis plus的jar包,因为后面会涉及到代码生成,所以我们还需要导入页面模板引擎,这里我们用的是freemarker。

    pom.xml导入以下依赖

          <!-- 加载mybatis-plus jar包 -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <!--mybatis-plus反向生成-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>3.4.1</version>
            </dependency>
            <!-- 模板引擎 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
            </dependency>
    
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
    依赖

    CodeGenarator代码

      1 import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
      2 import com.baomidou.mybatisplus.core.toolkit.StringPool;
      3 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
      4 import com.baomidou.mybatisplus.generator.AutoGenerator;
      5 import com.baomidou.mybatisplus.generator.InjectionConfig;
      6 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
      7 import com.baomidou.mybatisplus.generator.config.FileOutConfig;
      8 import com.baomidou.mybatisplus.generator.config.GlobalConfig;
      9 import com.baomidou.mybatisplus.generator.config.PackageConfig;
     10 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
     11 import com.baomidou.mybatisplus.generator.config.TemplateConfig;
     12 import com.baomidou.mybatisplus.generator.config.po.TableInfo;
     13 import com.baomidou.mybatisplus.generator.config.rules.DateType;
     14 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
     15 import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
     16 
     17 import java.util.ArrayList;
     18 import java.util.List;
     19 import java.util.Scanner;
     20 
     21 
     22 public class CodeGenerator {
     23     /**
     24      * <p>
     25      * 读取控制台内容
     26      * </p>
     27      */
     28     public static String scanner(String tip) {
     29         Scanner scanner = new Scanner(System.in);
     30         StringBuilder help = new StringBuilder();
     31         help.append("请输入" + tip + "");
     32         System.out.println(help.toString());
     33         if (scanner.hasNext()) {
     34             String ipt = scanner.next();
     35             if (StringUtils.isNotBlank(ipt)) {
     36                 return ipt;
     37             }
     38         }
     39         throw new MybatisPlusException("请输入正确的" + tip + "");
     40     }
     41 
     42     public static void main(String[] args) {
     43         // 代码生成器
     44         AutoGenerator mpg = new AutoGenerator();
     45         // 全局配置
     46         String module = "workticket";
     47         GlobalConfig gc = new GlobalConfig();
     48         String projectPath = System.getProperty("user.dir") + "/" + module;
     49         gc.setOutputDir(projectPath + "/src/main/java");
     50         //作者
     51         gc.setAuthor(scanner("作者名"));
     52         //打开输出目录
     53         gc.setOpen(false);
     54 //        //xml开启 BaseResultMap
     55 //        gc.setBaseResultMap(true);
     56 //        //xml 开启BaseColumnList
     57 //        gc.setBaseColumnList(true);
     58         // 实体属性 Swagger2 注解
     59         gc.setSwagger2(true);
     60         gc.setDateType(DateType.ONLY_DATE);
     61         mpg.setGlobalConfig(gc);
     62 
     63 
     64         // 数据源配置
     65         DataSourceConfig dsc = new DataSourceConfig();
     66 //        dsc.setUrl("jdbc:mysql://localhost:3307/vueblog?" +
     67 //                "useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia" +
     68 //                "/Shanghai");
     69 //        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
     70 //        dsc.setUsername("root");
     71 //        dsc.setPassword("001314");
     72 //        mpg.setDataSource(dsc);
     73         dsc.setUrl("jdbc:postgresql://localhost:5432/test");
     74         dsc.setSchemaName("public");
     75         dsc.setDriverName("org.postgresql.Driver");
     76         dsc.setUsername("postgres");
     77         dsc.setPassword("123456");
     78         mpg.setDataSource(dsc);
     79 
     80         // 包配置
     81         PackageConfig pc = new PackageConfig();
     82         pc.setModuleName(module);
     83         pc.setParent("com.demo.micro");
     84         mpg.setPackageInfo(pc);
     85 
     86         // 自定义配置
     87         InjectionConfig cfg = new InjectionConfig() {
     88             @Override
     89             public void initMap() {
     90                 // to do nothing
     91             }
     92         };
     93         // 如果模板引擎是 freemarker
     94         String templatePath = "/templates/mapper.xml.ftl";
     95         // 如果模板引擎是 velocity
     96         // String templatePath = "/templates/mapper.xml.vm";
     97         // 自定义输出配置
     98         List<FileOutConfig> focList = new ArrayList<>();
     99         // 自定义配置会被优先输出
    100         focList.add(new FileOutConfig(templatePath) {
    101             @Override
    102             public String outputFile(TableInfo tableInfo) {
    103                 // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
    104                 return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
    105             }
    106         });
    107         cfg.setFileOutConfigList(focList);
    108         mpg.setCfg(cfg);
    109         // 配置模板
    110         TemplateConfig templateConfig = new TemplateConfig();
    111         //执行main方法,在控制台直接输出表名,多个表名用,隔开结果
    112         templateConfig.setXml(null);
    113         mpg.setTemplate(templateConfig);
    114         // 策略配置
    115         StrategyConfig strategy = new StrategyConfig();
    116         //数据库表映射到实体的命名策略
    117         strategy.setNaming(NamingStrategy.underline_to_camel);
    118         //数据库表字段映射到实体的命名策略
    119         strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    120         //lombok模型
    121         strategy.setEntityLombokModel(true);
    122         //生成 @RestController 控制器
    123         strategy.setRestControllerStyle(true);
    124         strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
    125         strategy.setControllerMappingHyphenStyle(true);
    126         //表前缀
    127         strategy.setTablePrefix("");
    128         mpg.setStrategy(strategy);
    129         mpg.setTemplateEngine(new FreemarkerTemplateEngine());
    130         mpg.execute();
    131     }
    132 }
    CodeGenerator

    参考:https://blog.csdn.net/qq_44723773/article/details/118862972

  • 相关阅读:
    1.python全栈之路:python基础
    21、指定元素置后——数组
    20、泰勒展开式
    19、显示表达式的运算形式
    1、模拟蚂蚁借呗—利息计算
    05、C语言——循环结构
    04、C语言——选择结构
    03、C语言——顺序结构
    02、C语言——C语言组成与数据
    07、C语言——函数
  • 原文地址:https://www.cnblogs.com/zt007/p/15353500.html
Copyright © 2011-2022 走看看