对FreeMarker而言,无非是“Template + data-model = output”。
这里,假设我们所要生成的Java代码,即“output”如下:
package com.cs.qdog.swift.objects;
public class F32B {
private Double amount;
private String currency;
public Double getAmount() {
return amount;
}
public void setAmount(Double amount) {
this.amount = amount;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
}
其中,类名、属性都属于“data-model”,其可用树形结构表现如下:
(root)
|
+- class = “F32B”
|
|- properties
| |
| +- currency
| | |
| | +- name = “currency”
| | |
| | +- type = “String”
| |
| +- amount
| | |
| | +- name = “amount”
| | |
| | +- type = “Double”
那么,则可使用如下“Template”:
package com.cs.qdog.swift.objects;
public class ${class} {
<#list properties as prop>
private ${prop.type} ${prop.name};
</#list>
<#list properties as prop>
public ${prop.type} get${prop.name?cap_first}(){
return ${prop.name};
}
public void set${prop.name?cap_first}(${prop.type} ${prop.name}){
this.${prop.name} = ${prop.name};
}
</#list>
}
最后,将FreeMarker文档中的例子改动一下,测试生成“output”的Java程序如下:
package com.cs.qdog.swift.objects;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class GenObjects {
public static void main(String[] args) throws IOException,
TemplateException {
/* ------------------------------------------------------------------- */
/* You usually do it only once in the whole application life-cycle: */
/* Create and adjust the configuration */
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File(
"D:/Temp/EclipseWorkSpace/GenSwiftFields/templates"));
cfg.setObjectWrapper(new DefaultObjectWrapper());
/* ------------------------------------------------------------------- */
/* You usually do these for many times in the application life-cycle: */
/* Get or create a template */
Template temp = cfg.getTemplate("SwiftFieldClass.ftl");
/* Create a data-model */
Map<String, Object> root = new HashMap<String, Object>();
root.put("class", "F32B");
Collection<Map<String, String>> properties = new HashSet<Map<String, String>>();
root.put("properties", properties);
/* subfield 1: currency */
Map<String, String> currency = new HashMap<String, String>();
currency.put("name", "currency");
currency.put("type", "String");
properties.add(currency);
/* subfield 2: amount */
Map<String, String> amount = new HashMap<String, String>();
amount.put("name", "amount");
amount.put("type", "Double");
properties.add(amount);
/* Merge data-model with template */
Writer out = new OutputStreamWriter(System.out);
temp.process(root, out);
out.flush();
}
}
分享到:
相关推荐
Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java
根据数据库表直接生成Controller、model、service、mapper、mybatis的xml文件。 使用方法:加压下载文件,导入eclipse,项目中附了一份txt的说明文档
NULL 博文链接:https://jayluns.iteye.com/blog/1513885
freemarker实现代码生成器详细教程
不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取模板子类。 2. ...
代码生成器支持model、Mapper、Dao、Service、ServiceImpl、Controller 一次性的生成,支持同时生成多张表,此代码生成器依赖JAR包比较少,除了必用Freemarker 和JDBC之外基本上完全个人编写
Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码,代码可以直接复制到项目中使用,代码是基于pring框架的
NULL 博文链接:https://gznofeng.iteye.com/blog/251325
基于Freemarker模板的纯Java代码实现的代码生成器工具
springmvc+mybatis 和一个简单的freemarker代码生成工具
1.html模板+model数据,通过freemarker进行渲染,便于维护和修改 2.渲染后的html流,可通过Flying Saucer组件生成pdf文件流,或者生成pdf后再转成jpg文件流
freemarker生成word文件 1.模板制造 先用word编辑好格式样式。 另存为xml。 直接将后缀改为ftl格式,模板就生成了。 2.freemarker文件中的运算判断方式,可自行查询百度
利用freemarker生成MVC代码,避免做大量重复的复制黏贴替换工作,更专注在业务代码实现和难度更大的技术问题上,提高工作效率
2、由上述生成的html模板通过java代码生成pdf; 3、示例有本地模板和远程模板之分,可杜绝pdf标题丢失的问题; 4、资源概要:先阅读README.md文档,然后根据文档中的资源示例运行代码,有postman和内部调用两种方式; 5...
Java freemarker 模板生成word动态表格
java代码生成工具,使用freemarker做模版,resource下有模版的例子,可以自己定义需要生成的模版进行生成。暂时只开发了controller,service ,impl的模版。
给初学者一个简单的利用freemarker生成xml文件的例子
2、对springboot,spring,mybatis,mybatis plus,mysql,freemarker等java技术有基本应用。 3、可大大提高开发效率,数据表创建完以后,自动生成entity,mapper.xml,dao,service,controller,vo,dto相关代码。 4、本...
上次上传是自己手工string拼成实现的代码,这次试用了freemarker模板自动生成,效果是一样的,代码质量提高了
FreeMarker模板引擎不错,使用非常简单,其实可以做很多事情,比如代码自动生成,按格式生成work文件等,这里简单的实现了按照实体生成建表语句、action、biz、dao和对应的xml文件等