`
weitd
  • 浏览: 143350 次
  • 性别: Icon_minigender_1
  • 来自: 新都
社区版块
存档分类
最新评论

FreeMarker应用一例——生成Java代码(转)

 
阅读更多
对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();
    }

}
分享到:
评论
1 楼 zhoucanji 2016-11-20  
楼主的示例不错,本人亲试可以

相关推荐

    基于freemarker的JAVA代码生成工具

    "基于Freemarker的JAVA代码生成工具"就是这样一种实用的工具,它能够根据数据库中的表结构自动生成相应的Java源代码。 **Freemarker简介** Freemarker是一个强大的模板引擎,它支持动态语言,常用于生成HTML页面...

    使用FreeMarker生成java代码

    总的来说,“使用FreeMarker生成java代码”这个话题涵盖了模板引擎的基本概念、FreeMarker的语法特性以及如何结合Java应用来实现代码生成。通过学习和实践,开发者可以更加熟练地运用FreeMarker这一强大的工具,提升...

    Freemarker模板生成pdf+java

    Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java

    如何使用Freemarker生成java代码

    Freemarker是一个强大的模板引擎,常用于动态生成HTML、XML或其他文本格式的文件,比如在Java开发中,它被广泛应用于生成代码、邮件模板、报表等。本篇将详细介绍如何利用Freemarker来生成Java代码。 一、...

    Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码

    总的来说,Java利用Freemarker模板生成代码是一种常见的自动化开发实践,它提高了开发效率,降低了出错概率,让开发者能更专注于业务逻辑的实现,而不是基础架构的搭建。通过理解和掌握这一技术,开发者可以更好地...

    Java html转word 使用FreeMarker

    当我们需要在Web应用中生成可编辑的文档或者将网页内容导出为Word格式时,`FreeMarker`是一个非常实用的工具。这个标题“Java html转word 使用FreeMarker”暗示了一个Java项目,它利用FreeMarker模板引擎来实现HTML...

    自动生成java代码

    总结来说,利用FreeMarker自动生成Java代码是现代软件开发中的一个重要实践,它可以帮助开发者专注于业务逻辑和复杂问题,而不是琐碎的代码复制粘贴。通过精心设计的模板和数据模型,可以快速构建出符合规范的MVC...

    word文档生成html模板(freemarker)再转为pdf示例代码

    2、由上述生成的html模板通过java代码生成pdf; 3、示例有本地模板和远程模板之分,可杜绝pdf标题丢失的问题; 4、资源概要:先阅读README.md文档,然后根据文档中的资源示例运行代码,有postman和内部调用两种方式; 5...

    JAVA项目代码绘制PDF和通过freemarker动态生成PDF

    不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取模板子类。 2. ...

    使用freemarker模版引擎自动生成java项目源代码.zip

    【标题】"使用FreeMarker模版引擎自动生成Java项目源代码" 在软件开发过程中,代码生成是一个节省时间和提高效率的重要环节。FreeMarker是一个强大的、基于模板的Java模板引擎,广泛用于生成动态内容,如HTML、XML...

    Java代码自动生成 freemarker

    Java代码自动生成是一种提高开发效率、减少重复劳动的编程实践,FreeMarker是一个强大的模板引擎,常用于动态生成HTML或其他类型的文本文件,但在Java世界里,它也可以用来自动生成代码。本篇文章将深入探讨如何利用...

    java代码生成器

    Java代码生成器通常基于模板引擎来实现,例如压缩包中的"freemarker.jar",这是一个流行的Java模板引擎——FreeMarker。FreeMarker是一个与任何Java应用完全分离的模板引擎,它可以动态生成HTML、XML或其他任何形式...

    Java中使用 FreeMarker 生成pdf盖章合同文件

    在Java开发中,生成PDF文件是一项常见的需求,特别是在企业级应用中,如生成合同、报告等文档。FreeMarker是一个强大的模板引擎,常用于生成HTML、XML等动态内容,但也可以结合其他库来生成PDF。本篇文章将深入探讨...

    Java FreeMarker+Maven实现代码自动生成

    Java FreeMarker+Maven 实现代码自动生成是一个高效且灵活的方法,可以帮助开发者节省大量手动编写重复性代码的时间。FreeMarker 是一个强大的模板引擎,而Maven作为项目构建工具,能够帮助我们管理和组织项目的构建...

    freemarker wrod 统计图的生成

    FreeMarker 是一个强大的模板引擎,常用于动态生成HTML、Word等文档。在Word文档中生成统计图是一项常见的需求,尤其在数据分析和报告制作时。本篇文章将深入探讨两种方法,教你如何利用FreeMarker来实现这一功能。 ...

    freemarkerdemo 生成word 插入图片

    1. **Freemarker基础知识**:Freemarker是一个基于模板的语言,它允许开发者通过定义模板文件,然后结合Java对象数据,生成动态内容。模板文件中包含了一系列控制结构(如条件语句、循环)和变量引用,这些变量可以...

    FreeMarker 生成Java、mybatis文件

    在Java开发中,FreeMarker被广泛应用于生成代码,如本例中提到的“FreeMarker 生成Java、mybatis文件”。这个过程涉及到Java编程、模板语言、以及MyBatis框架的使用。 1. **FreeMarker 模板引擎** FreeMarker 是一...

    json、post请求、freemarker模拟生成sql、wsdl2Java生成客户代码

    Wsdl2Java工具是Apache CXF框架的一部分,它用于从WSDL(Web Services Description Language)文件生成Java客户端和服务端代码。WSDL是描述Web服务的XML文档,包含了服务的接口定义、消息格式、地址等信息。使用Wsdl...

    基于spring boot freemarker代码生成器

    代码生成器支持model、Mapper、Dao、Service、ServiceImpl、Controller 一次性的生成,支持同时生成多张表,此代码生成器依赖JAR包比较少,除了必用Freemarker 和JDBC之外基本上完全个人编写

    freemarker生成xml示例

    Freemarker是一个强大的模板引擎,常用于Java应用中动态生成HTML、XML或其他文本格式的文件。这个示例是关于如何使用Freemarker来生成XML文件,对于初学者来说,理解这个过程有助于掌握Freemarker的基本用法和XML的...

Global site tag (gtag.js) - Google Analytics