Commit 60477a04 by yuwei

项目初始化

parent ab2a8f3a
......@@ -42,6 +42,6 @@ spring:
datasource:
mysql:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
......@@ -30,7 +30,7 @@ spring:
datasource:
mysql:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:p6spy:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
......
......@@ -30,7 +30,7 @@ spring:
datasource:
mysql:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:p6spy:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
......
......@@ -42,7 +42,7 @@ spring:
datasource:
mysql:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:p6spy:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
......
......@@ -42,7 +42,7 @@ spring:
datasource:
mysql:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
......
......@@ -25,7 +25,11 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<dependency>
<groupId>cn.datax</groupId>
<artifactId>datax-common-core</artifactId>
<version>${app.version}</version>
</dependency>
</dependencies>
......
package cn.datax.tool.codegen.engine;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.config.ConstVal;
import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine;
import com.netflix.discovery.util.StringUtil;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Map;
import java.util.Properties;
public class VelocityTemplateEngine extends AbstractTemplateEngine {
private static final String DOT_VM = ".vm";
private VelocityEngine velocityEngine;
public VelocityTemplateEngine() {
}
public VelocityTemplateEngine init(ConfigBuilder configBuilder) {
super.init(configBuilder);
if (null == this.velocityEngine) {
Properties p = new Properties();
p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
p.setProperty("file.resource.loader.path", "");
p.setProperty("UTF-8", ConstVal.UTF8);
p.setProperty("input.encoding", ConstVal.UTF8);
p.setProperty("file.resource.loader.unicode", "true");
this.velocityEngine = new VelocityEngine(p);
}
return this;
}
public void writer(Map<String, Object> objectMap, String templatePath, String outputFile) throws Exception {
if (!StringUtils.isEmpty(templatePath)) {
Template template = this.velocityEngine.getTemplate(templatePath, ConstVal.UTF8);
FileOutputStream fos = new FileOutputStream(outputFile);
Throwable var6 = null;
String entity = objectMap.get("entity").toString();
objectMap.put("className", entity.replace("Entity", ""));
objectMap.put("classNameLower", StrUtil.lowerFirst(entity.replace("Entity", "")));
try {
OutputStreamWriter ow = new OutputStreamWriter(fos, ConstVal.UTF8);
Throwable var8 = null;
try {
BufferedWriter writer = new BufferedWriter(ow);
Throwable var10 = null;
try {
template.merge(new VelocityContext(objectMap), writer);
} catch (Throwable var54) {
var10 = var54;
throw var54;
} finally {
if (writer != null) {
if (var10 != null) {
try {
writer.close();
} catch (Throwable var53) {
var10.addSuppressed(var53);
}
} else {
writer.close();
}
}
}
} catch (Throwable var56) {
var8 = var56;
throw var56;
} finally {
if (ow != null) {
if (var8 != null) {
try {
ow.close();
} catch (Throwable var52) {
var8.addSuppressed(var52);
}
} else {
ow.close();
}
}
}
} catch (Throwable var58) {
var6 = var58;
throw var58;
} finally {
if (fos != null) {
if (var6 != null) {
try {
fos.close();
} catch (Throwable var51) {
var6.addSuppressed(var51);
}
} else {
fos.close();
}
}
}
logger.debug("模板:" + templatePath + "; 文件:" + outputFile);
}
}
public String templateFilePath(String filePath) {
return null != filePath && !filePath.contains(".vm") ? filePath + ".vm" : filePath;
}
}
package cn.datax.tool.codegen.utils;
import cn.datax.tool.codegen.engine.VelocityTemplateEngine;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
......@@ -7,12 +8,13 @@ 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.VelocityTemplateEngine;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CodeGenerator {
public class Generate {
public static void main(String[] args) {
// 代码生成器
......@@ -64,7 +66,6 @@ public class CodeGenerator {
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
......@@ -122,11 +123,187 @@ public class CodeGenerator {
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix("sys_");
// strategy.setInclude(new String[]{"sys_user", "sys_role", "sys_dept", "sys_menu", "sys_post", "sys_user_role", "sys_user_dept", "sys_user_post", "sys_role_menu"});
strategy.setInclude(new String[]{"sys_role_dept"});
strategy.setInclude(new String[]{"sys_user"});
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new VelocityTemplateEngine());
mpg.execute();
}
/**
* 根据表自动生成
*
* @param moduleName 模块名
* @param parentName 包名
* @param tableNames 表名
*/
private void generateByTables(String moduleName, String parentName, List<String> tableNames) {
//配置数据源
DataSourceConfig dataSourceConfig = getDataSourceConfig();
//全局变量配置
GlobalConfig globalConfig = getGlobalConfig();
//包名配置
PackageConfig packageConfig = getPackageConfig(moduleName, parentName);
// 策略配置
StrategyConfig strategyConfig = getStrategyConfig(tableNames);
//自定义配置
InjectionConfig injectionConfig = getInjectionConfig();
//配置模板
TemplateConfig templateConfig = getTemplateConfig();
//自动生成
atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig, injectionConfig, templateConfig);
}
/**
* 集成
*
* @param dataSourceConfig 数据源配置
* @param strategyConfig 策略配置
* @param globalConfig 全局变量配置
* @param packageConfig 包名配置
* @param injectionConfig 自定义配置
* @param templateConfig 模板配置
*/
private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig globalConfig, PackageConfig packageConfig,
InjectionConfig injectionConfig, TemplateConfig templateConfig) {
new AutoGenerator()
.setGlobalConfig(globalConfig)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(packageConfig)
.setCfg(injectionConfig)
.setTemplate(templateConfig)
.setTemplateEngine(new VelocityTemplateEngine())
.execute();
}
/**
* 自定义配置 可以在 VM 中使用 cfg.abc
*
* @return templateConfig
*/
private InjectionConfig getInjectionConfig() {
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
this.setMap(map);
}
};
List<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return System.getProperty("user.home") + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
return cfg;
}
/**
* 模板配置
*
* @return templateConfig
*/
private TemplateConfig getTemplateConfig() {
return new TemplateConfig()
.setEntity("templates/entity.java")
.setController("templates/controller.java")
.setService("templates/service.java")
.setServiceImpl("templates/serviceImpl.java")
.setMapper("templates/mapper.java")
.setXml(null);
}
/**
* 设置包名
*
* @param moduleName 模块名 如:system
* @param parentName 父路径包名 如:cn.datax.service
* @return PackageConfig 包名配置
*/
private PackageConfig getPackageConfig(String moduleName, String parentName) {
return new PackageConfig()
.setModuleName(moduleName)
.setParent(parentName)
.setXml("mapper")
.setMapper("dao")
.setController("controller")
.setService("service")
.setServiceImpl("service.impl")
.setEntity("entity");
}
/**
* 全局配置
*
* @return GlobalConfig
*/
private GlobalConfig getGlobalConfig() {
return new GlobalConfig()
//是否打开输出目录
.setOpen(false)
//开启 baseColumnList
.setBaseColumnList(true)
//开启 BaseResultMap
.setBaseResultMap(true)
//开启 ActiveRecord 模式
.setActiveRecord(false)
//是否覆盖已有文件
.setFileOverride(true)
//实体属性 Swagger2 注解
.setSwagger2(false)
.setAuthor("yuwei")
//指定生成的主键的ID类型
.setIdType(IdType.ID_WORKER_STR)
//设置输出路径
.setOutputDir(System.getProperty("user.home") + "/src/main/java/")
.setEntityName("%sEntity")
.setMapperName("%sDao")
.setXmlName("%sMapper")
.setServiceName("%sService")
.setServiceImplName("%sServiceImpl")
.setControllerName("%sController");
}
/**
* 策略配置
*
* @param tableNames 表名
* @return StrategyConfig
*/
private StrategyConfig getStrategyConfig(List<String> tableNames) {
return new StrategyConfig()
//从数据库表到文件的命名策略
.setNaming(NamingStrategy.underline_to_camel)
.setColumnNaming(NamingStrategy.underline_to_camel)
.setSuperEntityClass("cn.datax.common.base.BaseEntity")
//写于父类中的公共字段
.setSuperEntityColumns(new String[]{"id", "create_time", "create_by", "update_time", "update_by", "status"})
.setEntityLombokModel(true)
.setRestControllerStyle(true)
//公共父类
.setSuperControllerClass("cn.datax.common.base.BaseController")
.setSuperServiceClass("cn.datax.common.base.BaseService")
.setSuperServiceImplClass("cn.datax.common.base.BaseServiceImpl")
.setSuperMapperClass("cn.datax.common.base.BaseDao")
.setControllerMappingHyphenStyle(true)
.setTablePrefix("sys_")
.setInclude(tableNames.toArray(new String[tableNames.size()]));
}
/**
* 配置数据源
*
* @return 数据源配置 DataSourceConfig
*/
private DataSourceConfig getDataSourceConfig() {
return new DataSourceConfig()
.setUrl("jdbc:mysql://localhost:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8")
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUsername("root")
.setPassword("1234@abcd");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment