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

posted on 2021-09-29 16:36  腾逸  阅读(466)  评论(0编辑  收藏  举报