guohongjin
2024-05-10 19d4dd3d5ab4563b06b13f2cfefd752920ffb9a1
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
package com.mindant.generator.action.config;
 
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.mindant.generator.engine.SimpleTemplateEngine;
import com.mindant.generator.engine.base.GunsTemplateEngine;
import com.mindant.generator.engine.config.ContextConfig;
import com.mindant.generator.util.FileUtil;
 
 
import java.io.File;
import java.util.List;
 
/**
 * 代码生成的抽象配置
 */
public abstract class AbstractGeneratorConfig {
 
    /**
     * Java实体自定义模板(在/src/main/resources目录下,*建议:与Rest模板保持一致*)
     */
    private static final String templateFilePath = "/gunsTemplate/advanced/entity.java.vm";
 
    /**
     * mybatis-plus代码生成器配置
     */
    GlobalConfig globalConfig = new GlobalConfig();
 
    DataSourceConfig dataSourceConfig = new DataSourceConfig();
 
    StrategyConfig strategyConfig = new StrategyConfig();
 
    PackageConfig packageConfig = new PackageConfig();
 
    TableInfo tableInfo = null;
 
    /**
     * Guns代码生成器配置
     */
    ContextConfig contextConfig = new ContextConfig();
 
//    SqlConfig sqlConfig = new SqlConfig();
 
    protected abstract void config();
 
    public void init() {
        config();
 
        packageConfig.setService(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service");
        packageConfig.setServiceImpl(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service.impl");
 
        //controller没用掉,生成之后会自动删掉
        packageConfig.setController("TTT");
 
        if (!contextConfig.getEntitySwitch()) {
            packageConfig.setEntity("TTT");
        }
 
        if (!contextConfig.getDaoSwitch()) {
            packageConfig.setMapper("TTT");
            packageConfig.setXml("TTT");
        }
 
        if (!contextConfig.getServiceSwitch()) {
            packageConfig.setService("TTT");
            packageConfig.setServiceImpl("TTT");
        }
 
    }
 
    /**
     * 删除不必要的代码
     */
    public void destory() {
        String outputDir = globalConfig.getOutputDir() + "/TTT";
        FileUtil.deleteDir(new File(outputDir));
    }
 
    public AbstractGeneratorConfig() {
    }
 
    public void doMpGeneration() {
        init();
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setGlobalConfig(globalConfig);
        autoGenerator.setDataSource(dataSourceConfig);
        autoGenerator.setStrategy(strategyConfig);
        autoGenerator.setPackageInfo(packageConfig);
 
        // 自定义模板配置【如使用默认模板,则注释此段代码】
        TemplateConfig tc = new TemplateConfig();
        tc.setEntity(templateFilePath);
        tc.setMapper("/gunsTemplate/advanced/mapper.java.vm");
        tc.setService("/gunsTemplate/advanced/service.java.vm");
        tc.setServiceImpl("/gunsTemplate/advanced/serviceImpl.java.vm");
        // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。
        autoGenerator.setTemplate(tc);
 
        autoGenerator.execute();
        destory();
 
        //获取table信息,用于guns代码生成
        List<TableInfo> tableInfoList = autoGenerator.getConfig().getTableInfoList();
        if (tableInfoList != null && tableInfoList.size() > 0) {
            this.tableInfo = tableInfoList.get(0);
        }
    }
 
    public void doGunsGeneration() {
        GunsTemplateEngine GunsTemplateEngine = new SimpleTemplateEngine();
        GunsTemplateEngine.setContextConfig(contextConfig);
//        sqlConfig.setConnection(dataSourceConfig.getConn());
//        GunsTemplateEngine.setSqlConfig(sqlConfig);
        GunsTemplateEngine.setTableInfo(tableInfo);
        GunsTemplateEngine.start();
    }
}