package com.wjxt.autocode;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import freemarker.cache.StringTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.utility.StringUtil;
public class FreemarkerUtil {
// 公共资源
public static String TEMP_SERVLET_CONTEXT = ""; // 项目路径[D:\xxxx\autocode\]
public static String MODEL_ROOTPATH = "";// "/WEB-INF/templates/";
public static String MODEL_SUFFIX = ".ftl";
// 类模板名
public static final List<String> modelNameList = new ArrayList<String>();; // 存储所有模板名
public static final List<String> needTransferNameList = new ArrayList<String>();; // 存储结果需要转换【StringUtil.XMLEnc】的模板名
public static String SERVICE_MODEL = "iservice";
public static String SERVICEIMPL_MODEL = "service";
public static String DAO_MODEL = "dao";
public static String IDAO_MODEL = "idao";// mapping
public static String MAPPING_MODEL = "mapping";// mapping
public static String ENTITY_MODEL = "model";
public static String CONTROLLER_MODEL = "controller";
public static String JSP_MODEL = "jsp";
public static String JS_MODEL = "js";
public static String TEST_MODEL = "test";
// 工具类配置
private static String DECODE = "UTF-8";
private static final Configuration config = new Configuration();;
private static final StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
private static Template template;
private static Writer out = null;
public static Map<String, String> templateMap; // 所有模板的字符串
private static String m_strRootDir = "";
private static String m_strOutRootDir = "";
public static void init(String tempServletContext) {
modelNameList.add(SERVICE_MODEL);
modelNameList.add(SERVICEIMPL_MODEL);
modelNameList.add(DAO_MODEL);
modelNameList.add(IDAO_MODEL);
// modelNameList.add(MAPPING_MODEL);
modelNameList.add(ENTITY_MODEL);
modelNameList.add(CONTROLLER_MODEL);
modelNameList.add(JSP_MODEL);
modelNameList.add(JS_MODEL);
// modelNameList.add(TEST_MODEL);
// needTransferNameList.add(MAPPING_MODEL);
TEMP_SERVLET_CONTEXT = tempServletContext;
templateMap = getAllFileStr();
for (Entry<String, String> entry : templateMap.entrySet()) {
stringTemplateLoader.putTemplate(entry.getKey(), entry.getValue());
}
config.setTemplateLoader(stringTemplateLoader);
}
/**
* 产生所有业务类
*
* @param db_type 数据库类型
* @param db_url 数据库url
* @param db_user 数据库用户名
* @param db_pw 数据库密码
* @param db_table 数据库表名
* @param entityName 实体类名
* @param interfaceName 接口名
* @param fieldList 字段属性
* @return Map<String, String> 业务类集合
*/
public static Map<String, String> getAllClass(String db_type, String db_url, String db_user, String db_pw, String db_table, String entityName, String interfaceName, String packagePartName,
String packagePartName2) {
Map<String, Object> beanMap = ParamUtil.getFinalParam(db_type, db_url, db_user, db_pw, db_table, entityName, interfaceName, packagePartName, packagePartName2);
// , fieldList);
return getAllClass(beanMap);
}
/**
* 产生所有业务类
*
* @param beanMap 属性集合
* @return Map<String, String> 业务类集合
*/
public static Map<String, String> getAllClass(Map<String, Object> beanMap) {
Map<String, String> bzClassMap = new HashMap<String, String>();
String entityName = (String) beanMap.get("entityName");
for (String modelName : modelNameList) {
if (needTransferNameList.contains(modelName)) {
bzClassMap.put(modelName, StringUtil.XMLEnc(getCLass(modelName, modelName + " of " + entityName, beanMap)));
} else {
bzClassMap.put(modelName, getCLass(modelName, modelName + " of " + entityName, beanMap));
}
}
return bzClassMap;
}
/**
* 产生java类
*
* @param modle 模板字符串名【eg:entityTemplate】
* @param target java类名【eg:User】,仅打印调试用,实际产生结果为字符串
* @param rootMap 参数,包括接口名,实体名,实体属性等
* @return String 业务类
*/
public static String getCLass(String modle, String target, Map<String, Object> rootMap) {
StringWriter stringWriter = new StringWriter();
try {
template = config.getTemplate(modle, DECODE);
out = new BufferedWriter(stringWriter);
String packagePartName = (String) rootMap.get("packagePartName");
String packagePartName2 = (String) rootMap.get("packagePartName2");
String interfaceName = (String) rootMap.get("interfaceName");
String strDir = m_strOutRootDir + "." + packagePartName + "." + packagePartName2 + ".";// "cms" interfaceName.toLowerCase()
String strTmp = "";
if (modle.indexOf("iservice") >= 0) {
strTmp = modle.substring(1);// "service.impl";
} else if (modle.indexOf("idao") >= 0) {
strTmp = modle.substring(1);// "dao";
} else if (modle.equals("jsp")) {
strTmp = "";// modle;
strDir = m_strOutRootDir + ".webapp.WEB-INF.jsp.admin.";// resources\js\admin
} else if (modle.equals("js")) {
strTmp = "";// modle;
strDir = m_strOutRootDir + ".webapp.resources.js.admin.";// resources\js\admin
} else {
strTmp = modle;
}
strDir = strDir.replace(".", "/") + strTmp.toLowerCase();
File fileDir = new File(strDir);
if (fileDir.exists() == false) {
fileDir.mkdirs();
}
// System.out.println("\nfileDir="+fileDir);
String strFileName = ParamUtil.toUpString(modle);// modle.substring(0,
// 1).toUpperCase()+modle.substring(1);
if (modle.equals("model")) {
strFileName = interfaceName + ".java";
} else if (modle.equals("iservice")) {
strFileName = "I" + interfaceName + "Service" + ".java";
} else if (modle.equals("idao")) {
strFileName = "I" + interfaceName + "Dao" + ".java";
} else if (modle.equals("jsp")) {
strFileName = interfaceName.toLowerCase() + ".jsp";
} else if (modle.equals("js")) {
strFileName = interfaceName.toLowerCase() + ".js";
} else {
strFileName = interfaceName + strFileName + ".java";
}
// System.out.println("strFileName="+strFileName);
template.process(rootMap, out);
out.flush();
out.close();
FileOutputStream fos = new FileOutputStream(new File(fileDir + "/" + strFileName));
OutputStreamWriter writerStream = new OutputStreamWriter(fos, DECODE);
BufferedWriter fileOut = new BufferedWriter(writerStream);
fileOut.write(stringWriter.toString());
fileOut.close();
// System.out.println("---" + target + "--- is already ok");
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
System.err.println("something error in:" + modle);
e.printStackTrace();
}
return stringWriter.toString();
}
/**
* 将所有.ftl文件内容转换为字符串
*
* @return
*/
public static Map<String, String> getAllFileStr() {
Map<String, String> fileStrMap = new HashMap<String, String>();
for (String modelName : modelNameList) {
fileStrMap.put(modelName, file2Str(modelName + MODEL_SU
没有合适的资源?快使用搜索试试~ 我知道了~
依据mysql的表,生成java、jsp和js源代码文件
共24个文件
ftl:8个
class:5个
java:5个
需积分: 8 0 下载量 27 浏览量
2022-08-02
12:32:07
上传
评论
收藏 1.99MB RAR 举报
温馨提示
利用freemarker-2.3.9,依据mysql的表,生成符合spring-webmvc-4.3.5.RELEASE的contriller、service、model、iservice、dao、idao 6个java文件和一个jsp、一个js 。 功能强大! 里面有源代码。
资源详情
资源评论
资源推荐
收起资源包目录
table2java20220802.rar (24个子文件)
bin
createFile.bat 73B
com
wjxt
autocode
MysqlUtil.class 5KB
OracleUtil.class 5KB
FreemarkerUtil.class 11KB
ReadConfig.class 2KB
ParamUtil.class 6KB
params.properties 567B
templates
idao.ftl 829B
jsp.ftl 4KB
model.ftl 1KB
js.ftl 3KB
iservice.ftl 888B
service.ftl 2KB
dao.ftl 2KB
controller.ftl 5KB
src
com
wjxt
autocode
OracleUtil.java 4KB
ParamUtil.java 6KB
MysqlUtil.java 4KB
FreemarkerUtil.java 13KB
ReadConfig.java 2KB
params.properties 530B
outRootDir
lib
fastjson-1.2.5.jar 402KB
mysql-connector-java-5.1.44.jar 976KB
freemarker-2.3.9.jar 789KB
共 24 条
- 1
xuzhang2008
- 粉丝: 1
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0