You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
6.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.sifang.generate;
import com.google.common.collect.Maps;
import com.sifang.modules.sys.common.utils.FileUtils;
import com.sifang.modules.sys.common.utils.FreeMarkers;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.util.Map;
/**
* 代码生成器
* @version 2019-06-21
*/
public class TraderGenerate {
private static Logger logger = LoggerFactory.getLogger(TraderGenerate.class);
public static void main(String[] args) throws Exception {
// ========== ↓↓↓↓↓↓ 执行前请修改参数,谨慎执行。↓↓↓↓↓↓ ====================
// 主要提供基本功能模块代码生成。
// 目录生成结构:{packageName}/{moduleName}/{dao,entity,service,web}/{subModuleName}/{className}
// packageName 包名这里如果更改包名请在applicationContext.xml和spring-mvc.xml中配置base-package、packagesToScan属性来指定多个共4处需要修改
String packageName = "com.sifang.modules";
String moduleName = "insurance"; // 模块名sys
String subModuleName = ""; // 子模块名(可选)
String className = "CrmInsuranceList"; // 类名user
String classAuthor = "DQChen"; // 类作者Ivan
String functionName = "保险信息"; // 功能名,例:用户
if (StringUtils.isBlank(moduleName) || StringUtils.isBlank(moduleName)
|| StringUtils.isBlank(className) || StringUtils.isBlank(functionName)) {
logger.error("参数设置错误:包名、模块名、类名、功能名不能为空。");
return;
}
// 获取文件分隔符
String separator = File.separator;
// 获取工程路径
String projectPath = "E:\\IDEA_Workspace\\the-lyui-frameworks";
// 模板文件路径
String tplPath = StringUtils.replace(projectPath + "/src/main/java/com/sifang/generate/template", "/", separator);
logger.info("Template Path: {}", tplPath);
// Java文件路径
String javaPath = StringUtils.replaceEach(projectPath + "/src/main/java/" + StringUtils.lowerCase(packageName),
new String[]{"/", "."}, new String[]{separator, separator});
logger.info("Java Path: {}", javaPath);
// 代码模板配置
Configuration cfg = new Configuration();
cfg.setDefaultEncoding("UTF-8");
cfg.setDirectoryForTemplateLoading(new File(tplPath));
// 定义模板变量
Map<String, String> model = Maps.newHashMap();
model.put("packageName", StringUtils.lowerCase(packageName));
model.put("moduleName", StringUtils.lowerCase(moduleName));
model.put("subModuleName", StringUtils.isNotBlank(subModuleName) ? "." + StringUtils.lowerCase(subModuleName) : "");
model.put("className", StringUtils.uncapitalize(className));
model.put("ClassName", StringUtils.capitalize(className));
model.put("classAuthor", StringUtils.isNotBlank(classAuthor) ? classAuthor : "Generate Tools");
model.put("classVersion", "");
model.put("functionName", functionName);
model.put("tableName", model.get("moduleName") + (StringUtils.isNotBlank(subModuleName)
? "_" + StringUtils.lowerCase(subModuleName) : "") + "_" + model.get("className"));
model.put("urlPrefix", model.get("moduleName") + (StringUtils.isNotBlank(subModuleName)
? "/" + StringUtils.lowerCase(subModuleName) : "") + "/" + model.get("className"));
model.put("viewPrefix", //StringUtils.substringAfterLast(model.get("packageName"),".")+"/"+
model.get("urlPrefix"));
model.put("permissionPrefix", model.get("moduleName") + (StringUtils.isNotBlank(subModuleName)
? ":" + StringUtils.lowerCase(subModuleName) : "") + ":" + model.get("className"));
// 生成 Entity
Template template = cfg.getTemplate("entity.ftl");
String content = FreeMarkers.renderTemplate(template, model);
String filePath = javaPath + separator + model.get("moduleName") + separator + "entity"
+ separator + StringUtils.lowerCase(subModuleName) + separator + model.get("ClassName") + ".java";
writeFile(content, filePath);
logger.info("Entity: {}", filePath);
// 生成 Dao
template = cfg.getTemplate("dao.ftl");
content = FreeMarkers.renderTemplate(template, model);
filePath = javaPath + separator + model.get("moduleName") + separator + "dao" + separator
+ StringUtils.lowerCase(subModuleName) + separator + model.get("ClassName") + "Dao.java";
writeFile(content, filePath);
logger.info("Dao: {}", filePath);
// 生成 Service
template = cfg.getTemplate("service.ftl");
content = FreeMarkers.renderTemplate(template, model);
filePath = javaPath + separator + model.get("moduleName") + separator + "service" + separator
+ StringUtils.lowerCase(subModuleName) + separator + model.get("ClassName") + "Service.java";
writeFile(content, filePath);
logger.info("Service: {}", filePath);
// 生成 Controller
template = cfg.getTemplate("controller.ftl");
content = FreeMarkers.renderTemplate(template, model);
filePath = javaPath + separator + model.get("moduleName") + separator + "web" + separator
+ StringUtils.lowerCase(subModuleName) + separator + model.get("ClassName") + "Controller.java";
writeFile(content, filePath);
logger.info("Controller: {}", filePath);
writeFile(content, filePath);
logger.info("ViewList: {}", filePath);
logger.info("Generate Success.");
}
/**
* 将内容写入文件
*/
public static void writeFile(String content, String filePath) {
try {
if (FileUtils.createFile(filePath)) {
FileOutputStream fos = new FileOutputStream(filePath);
Writer writer = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bufferedWriter = new BufferedWriter(writer);
bufferedWriter.write(content);
bufferedWriter.close();
writer.close();
} else {
logger.info("生成失败,文件已存在!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}