您的位置:首页 > 编程语言 > Java开发

【java工具类】导入freemarker并且编写一个freemarker的辅助类

2013-05-07 09:57 316 查看
每次写了存储过程后都要写一堆类似的调用存储过程的java方法,各位有没有这样的感想?

代码生成器最基本要解决两个问题,第一,如何获取数据(数据表,存储过程的参数或者自定义模型);第二,获取了数据以后如何生成字符串(通常用模板引擎)。

这一篇文章将现学现用,探讨如何导入freemaker,如何解析一个模板,如何编写模板(模板语法),如何通过ide获得智能提示(没错,这一点是码农都希望有的),并且编写一个符合自己心意的封装了(封装freemaker的常用操作)。

这一篇文章有讲到:

http://sishuok.com/forum/posts/list/5154.html

下面我将已经编写的辅助类及结果贴上来。

【模板引擎辅助类】

package Easis.ViewEngine;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.StringWriter;
import java.util.Map;

public class FreemarkerHelper {
private Configuration _tplConfig=new Configuration();

/**
* @param tplRoot 当前的模板存放目录,譬如:/tpl,请注意,设置模版的文件夹路径,本人在src下新建了一个ftl文件夹
configuration.setClassForTemplateLoading(this.getClass(),"/ftl");
* */
public FreemarkerHelper(String tplRoot){

_tplConfig.setClassForTemplateLoading(this.getClass(),tplRoot);

}

public String parseTemplate(String tplName,String encoding,Map<String,Object> paras){
try{
StringWriter swriter=new StringWriter();
Template   mytpl=_tplConfig.getTemplate(tplName,encoding);
mytpl.process(paras,swriter);
return swriter.toString();

}
catch (Exception e){
e.printStackTrace();
return  e.toString();
}

}

public String parseTemplate(String tplName,Map<String,Object> paras){
return this.parseTemplate(tplName,"utf-8",paras);
}

}


【测试用模板---放在src下面的/tpl/test.ftl】

你好:${username}


【使用方式】

package TestCase;

import Easis.ViewEngine.FreemarkerHelper;
import freemarker.template.Configuration;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class testFreemarker {

public static void main(String[] args){
FreemarkerHelper viewEngine=new FreemarkerHelper("/tpl");
Map<String,Object> paras=new HashMap<String, Object>();
paras.put("username","欸你好吗?");
String theres=viewEngine.parseTemplate("test.ftl",paras);
System.out.println(theres);

}
}


【结果】



ok,那么下一步就是编写一个自动生成访问存储过程代码的程序了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐