`
liuwei8728
  • 浏览: 32439 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FreeMarker能不能写数据库脚本文件

阅读更多

这不是废话吗?本来Freemarker就是一模板引擎,有啥不可以的。不过有闲的蛋疼的嫌疑。

拿个简单运用吧。假如有张表,id号是从1到100,做个循环把名字输出来。

1.  废话不多说,先写模板文件 

select * from ktsys.sys_report_file where fi_id=${key}

 

2. 还能说啥,写java文件处理呗。

   思路很简单嘛,先解析数据源,取得连接,然后找这个sql.ftl文件呗。我放在了src下面,所以不管三七二十一,用代码找到它,然后写数据模型,并输出。此时sql.ftl文件的值得到填充,那好呗,我拿这条sql语句用JDBC的方式处理就ok了。

代码说话:

package com.victorysoft.trigger;

import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.net.URL;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import victorysoft.DAO.Result;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class ActionServletFM {
	private Configuration freemarker_cfg = null;

	public Configuration getFreeMarkerCFG() throws IOException {
		if (null == freemarker_cfg) {
			freemarker_cfg = new Configuration();
			URL u = CreateTriggerTemplate.class.getResource("/");
			freemarker_cfg
					.setDirectoryForTemplateLoading(new File(u.getPath()));
			freemarker_cfg.setEncoding(Locale.CHINA, "UTF-8");
		}
		return freemarker_cfg;
	}

	public String geneHtmlFile(Template t, Map<String, String> root) {
		try {
			StringWriter writer = new StringWriter();
			t.process(root, writer);
			return writer.getBuffer().toString();
		} catch (TemplateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return "";
	}

	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws IOException {
		new ClassPathXmlApplicationContext("proxoolData.xml");
		ActionServletFM test = new ActionServletFM();
		Result result2 = new Result("YTH");
		try {
			Template t = test.getFreeMarkerCFG().getTemplate("sql.ftl");
			Map<String, String> root=new HashMap<String, String>();
			for (int i = 1; i < 5; i++) {
				root.put("key", ""+i);
				String str=test.geneHtmlFile(t,root);
				result2.executeQuery(str.replaceAll("\r\n", ""));
				System.out.println(result2.getFieldValue(0, 2)+":::"+str.replaceAll("\r\n", ""));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 URL u = CreateTriggerTemplate.class.getResource("/");这个了,取得class当前目录,由于我把ftl文件就放src下了,所以就在这下面找就ok啦。其它废物代码不扯了。很easy!

 

我真怀疑有点蛋疼,但是了,这里想说明的是,freemarker是很强大的。反正是模板文件,不受任何其它文件语法影响。符合自己的语法规则就行,可以用于html、jsp、sql.多的是,可以做模板定制嘛!!!!!!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics