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

每次写了存储过程后都要写一堆类似的调用存储过程的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,那么下一步就是编写一个自动生成访问存储过程代码的程序了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值