用FreeMaker和模板生成文件的方法
2014-01-23 12:50
225 查看
FreeMarker是用Java开发的模板引擎,利用这个类库可以利用自定义的模板文件(*.ftl文本文件)生成一个新的文本文件。例如,利用数据库中的表,自动生成DAO文件和与之对应的Domain文件,就可以用FreeMaker来做。
首先,从http://freemarker.org/下载FreeMaker,下载的地址:http://sourceforge.net/projects/freemarker/files/freemarker/2.3.20/freemarker-2.3.20.tar.gz/download
下载的压缩文件中freemaker.jar就是需要的类库文件。
新建一个Java Application项目,将freemaker.jar加入项目的库中。
建立一个模板文件,例如在E:\temp下新建dao.ftl,内容如下:
private static ${domainname} mapData(ResultSet resultSet) throws SQLException {
return new ${domainname}(
resultSet.get${idtype}("id"),
<#assign index = 0>
<#list fieldnames as field>
resultSet.get${fieldtypes[field]}("${field}")<#if field_has_next>,</#if>
<#assign index = index+1>
</#list>
);
}
新建一个Java类:DAOGenerator.java
public class DAOGenerator {
public static void generate() throws Exception {
freemarker.template.Configuration cfg;
cfg = new freemarker.template.Configuration();
cfg.setDirectoryForTemplateLoading(new File("e:/temp"));
Map root = new HashMap();
List<String> fieldnames = new ArrayList<>();
Map fieldtypes = new HashMap();
root.put("domainname", "User");
root.put("idtype", "Long");
fieldnames.add("username");
fieldtypes.put("username","String");
fieldnames.add("password");
fieldtypes.put("password","String");
fieldnames.add("email");
fieldtypes.put("email","String");
fieldnames.add("age");
fieldtypes.put("age","Short");
root.put("fieldnames", fieldnames);
root.put("fieldtypes", fieldtypes);
String path = "E:/temp/dao/UserDao.java";
new File(path).delete();
Template t = getCfg().getTemplate("dao.ftl");
Writer out = new OutputStreamWriter(new FileOutputStream(path), "UTF-8");
t.process(root, out);
System.out.println("Finish the work");
}
}
得到的结果:
private static User mapData(ResultSet resultSet) throws SQLException {
return new User(
resultSet.getLong("id"),
resultSet.getString("username"),
resultSet.getString("password"),
resultSet.getString("email"),
resultSet.getShort("age")
);
}
首先,从http://freemarker.org/下载FreeMaker,下载的地址:http://sourceforge.net/projects/freemarker/files/freemarker/2.3.20/freemarker-2.3.20.tar.gz/download
下载的压缩文件中freemaker.jar就是需要的类库文件。
新建一个Java Application项目,将freemaker.jar加入项目的库中。
建立一个模板文件,例如在E:\temp下新建dao.ftl,内容如下:
private static ${domainname} mapData(ResultSet resultSet) throws SQLException {
return new ${domainname}(
resultSet.get${idtype}("id"),
<#assign index = 0>
<#list fieldnames as field>
resultSet.get${fieldtypes[field]}("${field}")<#if field_has_next>,</#if>
<#assign index = index+1>
</#list>
);
}
新建一个Java类:DAOGenerator.java
public class DAOGenerator {
public static void generate() throws Exception {
freemarker.template.Configuration cfg;
cfg = new freemarker.template.Configuration();
cfg.setDirectoryForTemplateLoading(new File("e:/temp"));
Map root = new HashMap();
List<String> fieldnames = new ArrayList<>();
Map fieldtypes = new HashMap();
root.put("domainname", "User");
root.put("idtype", "Long");
fieldnames.add("username");
fieldtypes.put("username","String");
fieldnames.add("password");
fieldtypes.put("password","String");
fieldnames.add("email");
fieldtypes.put("email","String");
fieldnames.add("age");
fieldtypes.put("age","Short");
root.put("fieldnames", fieldnames);
root.put("fieldtypes", fieldtypes);
String path = "E:/temp/dao/UserDao.java";
new File(path).delete();
Template t = getCfg().getTemplate("dao.ftl");
Writer out = new OutputStreamWriter(new FileOutputStream(path), "UTF-8");
t.process(root, out);
System.out.println("Finish the work");
}
}
得到的结果:
private static User mapData(ResultSet resultSet) throws SQLException {
return new User(
resultSet.getLong("id"),
resultSet.getString("username"),
resultSet.getString("password"),
resultSet.getString("email"),
resultSet.getShort("age")
);
}
相关文章推荐
- CodeSmith将模板文件批量生成文件的方法
- asp.net中利用XML描述文件和Excel模板相结合的方法生成Excel报表
- CodeSmith将模板文件批量生成文件的方法
- 使用freemaker和itext从html模板生成pdf文件
- eclipse develop for C\C++ 文件注释函数注释代码模板自动生成方法
- CodeSmith将模板文件批量生成文件的方法(转)
- CodeSmith将模板文件批量生成文件的方法
- CodeSmith将模板文件批量生成文件的方法
- CodeSmith将模板文件批量生成文件的方法 - 空空如也 - 博客园
- MFC 生成 exe文件的图标更改方法(转)
- itext使用模板生成pdf文件
- MFC 生成 exe文件的图标更改方法(转)
- php生成zip压缩文件的方法详解
- 波形文件(wlf/vcd/fsdb/shm/vpd)的区别,fsdb生成方法
- 查看CGLib生成的class文件方法
- 不用模板,只用ASP+FSO生成静态HTML页的一个方法
- 关于vs2012生成exe文件无法在xp运行解决方法
- 用gcc编译生成动态链接库*.so文件的方法
- php 批量生成html,txt文件的方法(实例代码)
- dedeCMS生成RSS文件时出现两次域名的解决方法