首页 > 编程语言 > 基于Mybatis Plus实现代码生成器CodeGenerator
2020
10-09

基于Mybatis Plus实现代码生成器CodeGenerator

导入生成器需要的依赖坐标:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-generator</artifactId>
  <version>3.2.0</version>
</dependency>
 
<dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity-engine-core</artifactId>
  <version>2.1</version>
</dependency>
 
<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.29</version>
</dependency>
 
<dependency>
  <groupId>com.ibeetl</groupId>
  <artifactId>beetl</artifactId>
  <version>3.0.11.RELEASE</version>
</dependency>

新建了一个普通Maven空项目:

创建我们的代码生成器程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.apache.commons.lang3.StringUtils;
 
import java.util.Scanner;
 
/**
 * @author DaiZhiZhou
 * @file MP-Spring
 * @create 2020-08-06 9:11
 */
public class CodeGenerator {
 
  /**
   * <p>
   * 读取控制台内容
   * </p>
   */
  public static String scanner(String tip) {
    Scanner scanner = new Scanner(System.in);
    StringBuilder help = new StringBuilder();
    help.append("请输入").append(tip).append(":");
    System.out.println(help.toString());
    if (scanner.hasNext()) {
      String ipt = scanner.next();
      if (StringUtils.isNotEmpty(ipt)) {
        return ipt;
      }
    }
    throw new MybatisPlusException("请输入正确的" + tip + "!");
  }
 
  public static void main(String[] args) {
    // 代码生成器
    AutoGenerator mybatisPlusCodeGenerator = new AutoGenerator();
 
    // 全局配置
    GlobalConfig gc = new GlobalConfig();
     
    // 先得到当前工程目录
    String projectPath = System.getProperty("user.dir");
    // 是maven项目的结构,就是工程目录 + /src/main/java
    gc.setOutputDir(projectPath + "/src/main/java");
     
    //gc.setOutputDir("D:\\workspace-sts\\0520adv\\02_mp_springboot/src/main/java");
     
    // 设置生成文件的作者信息
    gc.setAuthor("Echo42");
 
    //当代码生成完成之后是否打开代码所在的文件夹
    gc.setOpen(true);
     
    // gc.setSwagger2(true); 实体属性 Swagger2 注解
    //gc.setServiceName("%sService");
     
    // 将上述的全局配置注入
    mybatisPlusCodeGenerator.setGlobalConfig(gc);
 
    // 数据源配置
    DataSourceConfig dataSourceConfiguration = new DataSourceConfig();
 
 
    // dataSourceConfiguration.setSchemaName("public");
    dataSourceConfiguration.setDriverName("com.mysql.cj.jdbc.Driver");
    dataSourceConfiguration.setUsername("root");
    dataSourceConfiguration.setPassword("123456");
 
    mybatisPlusCodeGenerator.setDataSource(dataSourceConfiguration);
 
    // 包配置
    PackageConfig pc = new PackageConfig();
 
    // 设置父级包名
    pc.setParent("cn.echo42");//controller entity service service.impl
 
    pc.setModuleName(scanner("模块名"));
    //pc.setModuleName("sys");
 
    // 实体类名称
    pc.setEntity("domain");
 
    // mapper包名称
    pc.setMapper("mapper");
 
    // mapper对应的映射器xml
    pc.setXml("mapper.xml");
 
    // 业务包层名称
    pc.setService("service");
 
    // 业务接口的实现类包
    pc.setServiceImpl("service.impl");
 
    // 控制器包名称
    pc.setController("controller");
 
    // 装填包信息对象
    mybatisPlusCodeGenerator.setPackageInfo(pc);
 
    // 策略配置
    StrategyConfig strategy = new StrategyConfig();
 
    //设置字段和表名的是否把下划线完成驼峰命名规则
    strategy.setNaming(NamingStrategy.underline_to_camel);
 
    strategy.setColumnNaming(NamingStrategy.underline_to_camel);
 
    //设置生成的实体类继承的父类
    //strategy.setSuperEntityClass("com.sxt.BaseEntity");
 
    //是否启动lombok
    strategy.setEntityLombokModel(true);
 
    //是否生成resetController
    strategy.setRestControllerStyle(true);
 
    // 公共父类
    //strategy.setSuperControllerClass("com.sxt.BaseController");
 
    // 写于父类中的公共字段
    //strategy.setSuperEntityColumns("person_id","person_name");
 
    //要设置生成哪些表 如果不设置就是生成所有的表
    //strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
 
    strategy.setControllerMappingHyphenStyle(true);
 
    //strategy.setTablePrefix(pc.getModuleName() + "_");
    strategy.setTablePrefix("sys_");
 
    mybatisPlusCodeGenerator.setStrategy(strategy);
 
    mybatisPlusCodeGenerator.execute();
  }
}

点击运行:

然后生成的这个目录结构:

基础四层就帮我们自动创建完成了:

controller报错是因为没有加入SpringMVC:

如果是SSMP的开发模式,编写结构文件使用这个能省力很多,

但是对结构不清楚的情况还是多人肉手写熟悉熟悉

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。

编程技巧