ftl模板之code-generator

《ftl模板之code-generator》

一、maven坐标

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version> <!-- 此处版本号可能会随着时间而变化,请确保使用最新稳定版 -->
</dependency>
 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
 </dependency>

二、创建ftl模板

{resource目录下,创建templates文件夹、里面存放模板}

三、Java实体类生成案例

entity_template.ftl 模板内容

import lombok.Data;

@Data
public class ${className} {
<#list properties as property>
    private ${property.type} ${property.name};
</#list>
}

生成器代码如下

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CodeGenerator {

    public static void main(String[] args) throws IOException, TemplateException {
        // 准备数据模型
        Map<String, Object> dataModel = new HashMap<>();
        dataModel.put("className", "Person");

        List<Property> properties = new ArrayList<>();
        properties.add(new Property("String", "name"));
        properties.add(new Property("int", "age"));
        properties.add(new Property("String", "email"));

        dataModel.put("properties", properties);

        // 加载FTL模板
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_31);
        configuration.setClassLoaderForTemplateLoading(CodeGenerator.class.getClassLoader(), "templates");
        Template template = configuration.getTemplate("entity_template.ftl");

        // 将数据模型和FTL模板合并生成Java实体类代码
        StringWriter stringWriter = new StringWriter();
        template.process(dataModel, stringWriter);

        // 输出生成的Java实体类代码
        System.out.println(stringWriter.toString());
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Property {
        private String type;
        private String name;
    }

}

四、效果如下

在这里插入图片描述

ftl模板,可以高度自定义生成代码…。如html、vue、Java等。{看一下ftl语法即可}

猜你喜欢

转载自blog.csdn.net/weixin_52236586/article/details/131856657