FreeMarker的使用(下)

简介: FreeMarker的使用

二.二.六 其他配置


二.二.六.一 其他配置FTL


创建 other.ftl


  1. 字符串嵌套输出.


<#--字符串嵌套输出-->
<h3>字符串嵌套输出</h3>
${"hello ${name}"}


2.定义变量


<h3>定义变量输出</h3>
<#assign number1 = 10>
<#assign number2 = 5>


3.算术运算符


<h3>定义变量输出</h3>
<#assign number1 = 10>
<#assign number2 = 5>
<#-- 支持"+"、"-"、"*"、"/"、"%"运算符 -->
"+" : ${number1 + number2}
"-" : ${number1 - number2}
"*" : ${number1 * number2}
"/" : ${number1 / number2}
"%" : ${number1 % number2}


4.内建函数


<h3>内建函数</h3>
第一个字母大写: ${str?cap_first}
所有字母小写: ${str?lower_case}
所有字母大写: ${str?upper_case}


5.将数据取整


<h3>将数据取整</h3>
<#assign floatData = 12.34>
数值取整数:${floatData?int}


6.获取集合的长度


<h3>获取集合的长度:</h3>
获取集合的长度:${users?size}


7.日期进行格式化


<h3>日期进行格式化</h3>
时间格式化:${dateTime?string("yyyy-MM-dd")}


8.循环遍历 map


<#--循环遍历map-->
      Map集合:
      <#assign mapData={"name":"程序员", "salary":15000}>
      直接通过Key获取 Value值:${mapData["name"]}
      通过Key遍历Map:
      <#list mapData?keys as key>
          Key: ${key} - Value: ${mapData[key]}
      </#list>
      通过Value遍历Map:
      <#list mapData?values as value>
          Value: ${value}
      </#list>


  整体编写:


      <html>
      <head>
          <title>这是放置freemark的其他的相关的用法</title>
      </head>
      <body>
      <#--字符串嵌套输出-->
      <h3>字符串嵌套输出</h3>
      ${"hello ${name}"}
      <h3>定义变量输出</h3>
      <#assign number1 = 10>
      <#assign number2 = 5>
      <#-- 支持"+"、"-"、"*"、"/"、"%"运算符 -->
      "+" : ${number1 + number2}
      "-" : ${number1 - number2}
      "*" : ${number1 * number2}
      "/" : ${number1 / number2}
      "%" : ${number1 % number2}
      <h3>内建函数</h3>
      第一个字母大写: ${str?cap_first}
      所有字母小写: ${str?lower_case}
      所有字母大写: ${str?upper_case}
      <h3>将数据取整</h3>
      <#assign floatData = 12.34>
      数值取整数:${floatData?int}
      <h3>获取集合的长度:</h3>
      获取集合的长度:${users?size}
      <h3>日期进行格式化</h3>
      时间格式化:${dateTime?string("yyyy-MM-dd")}
      <#--循环遍历map-->
      Map集合:
      <#assign mapData={"name":"程序员", "salary":10000}>
      直接通过Key获取 Value值:${mapData["name"]}
      通过Key遍历Map:
      <#list mapData?keys as key>
          Key: ${key} - Value: ${mapData[key]}
      </#list>
      通过Value遍历Map:
      <#list mapData?values as value>
          Value: ${value}
      </#list>
      </body>
      </html>


二.二.六.二 其他配置开发


      @Test
          public void otherFill() throws Exception{
              //1. 创建 Configuration 对象
              Configuration configuration=new Configuration(Configuration.VERSION_2_3_29);
              //2. 设置基本的目录信息。
              configuration.setDirectoryForTemplateLoading(new File("D:\\learncode\\Template\\FreeMark\\Basic\\src\\main\\resources\\freemark"
                      ));
              //3. 设置编码等格式
              configuration.setDefaultEncoding("utf-8");
              //4. 设置要添加的数据信息
              Map<String,Object> root=new HashMap<>();
              root.put("name","两个蝴蝶飞");
              root.put("str","Two Butterfly");
              List<User> userList=getUserList();
              root.put("users",userList);
              root.put("dateTime",new Date());
              //5. 获取对应的模板
              Template template=configuration.getTemplate("other.ftl","utf-8");
              //6. 设置输出对象
              Writer out=new OutputStreamWriter(System.out);
              //7. 调用 template的 process 方法,进行填充
              template.process(root,out);
          }
          private List<User> getUserList() {
              List<User> userList=new ArrayList<>();
              for(int i=1;i<=10;i++){
                  User user=new User();
                  user.setId(i);
                  user.setName("蝴蝶"+i);
                  user.setAge(i*3+1);
                  user.setSex(i%2);
                  user.setDescription("一个简单的描述");
                  userList.add(user);
              }
              return userList;
          }


01d0440aeb33d6b7cec68f4ec4bcf50f.png


三. 使用 FreeMarker 配置模板文件


可以使用 FreeMarker的配置文件, 通过往模板里面填充属性,来创建特定的文件。


如生成一个基本的 Main 类


87ca661dd4bc06e8c24bf9fdb4d77f29.png


三.一 模板 FTL


package ${packageName};
/**
  @author: ${author}
  @Date: ${createDate?string("yyyy-MM-dd hh:mm:ss")}
  @Description: ${classDescription}
*/
public class ${className}{
    /**
        功能描述: ${mainMethodDesc!TODO}
    */
    public static void main(String []args){
        System.out.println("${info}");
    }
}


三.二 模板类创建


public class CodeAuto {
    public static String FTLTEMPLATE="src/main/java/com/zk/template/freemark/code/";
    public static String CODELOCATION="src/main/java/com/zk/template/freemark/code/";
    @Test
    public void codeGenerate() throws Exception{
        Configuration configuration=new Configuration(Configuration.VERSION_2_3_29);
        configuration.setDirectoryForTemplateLoading(new File(FTLTEMPLATE));
        configuration.setDefaultEncoding("utf-8");
        //填充数据
        Map root=getMainMap();
        //获取对应的模板
        Template template=configuration.getTemplate("main.ftl","utf-8");
        //获取对应的输出流
        Writer out=new BufferedWriter(
                new OutputStreamWriter(
                    new FileOutputStream(
                            CODELOCATION+"FreeMain.java"
                    )
                )
        );
        template.process(root,out);
        System.out.println(">>>>>>创建模板类成功");
    }
    private Map<String,Object> getMainMap() {
        Map<String,Object> root=new HashMap<>();
        root.put("packageName","com.zk.template.freemark.code");
        root.put("author","TwoButterfly");
        root.put("createDate",new Date());
        root.put("classDescription","一个测试Freemark 自动生成类");
        root.put("className","FreeMain");
        root.put("mainMethodDesc","一个普通的测试方法");
        root.put("info","Freemark 创建类生成信息");
        return root;
    }
}


36eb0c5ed351b6af5f3ea241a6e60a08.png


9598196bc6dff74ed4ea0c1c1f0ce51e.png


生成的模板文件类:


323c59c5186831a1a641766281fa4dab.png


本章节的代码放置在 github 上:


https://github.com/yuejianli/springboot/tree/develop/FreeMark


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关文章
|
6月前
|
XML Java 数据格式
freemarker
freemarker
|
6月前
|
XML Java 数据格式
freemarker使用总结
freemarker使用总结
|
6月前
|
前端开发 JavaScript Java
Thymeleaf一篇文章学会使用
Thymeleaf一篇文章学会使用
65 0
|
前端开发 Java 应用服务中间件
Thymeleaf
模板引擎 前端交给我们的页面,是html页面。如果是我们以前开发,我们需要把他们转成jsp页面,jsp好处就是当我们查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示,及交互等。
Thymeleaf
|
Web App开发 安全 Java
一篇很全面的freemarker教程
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:格式部分,不会输出 3,插值:即${...}或#{..
1894 0
|
前端开发 Java
Freemarker - 基础篇(上)
Freemarker - 基础篇(上)
353 0
Freemarker - 基础篇(上)
|
前端开发
Freemarker - 基础篇(下)
Freemarker - 基础篇(下)
199 0
Freemarker - 基础篇(下)
|
XML 前端开发 JavaScript
Thymeleaf的使用
最近听说thymeleaf好像也挺流行的,还说是spring官方推荐使用,那thymeleaf究竟是什么呢?spring为什么推荐用它呢?怎么用呢?本文将为你揭秘!
Thymeleaf的使用
|
消息中间件 Java 应用服务中间件
Freemarker(下)
Freemarker(下)
171 0
Freemarker(下)
|
XML Java Maven
Freemarker(上)
Freemarker(上)
164 0
Freemarker(上)