欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用模版引擎FreeMarker生成sql脚本

程序员文章站 2022-07-04 20:27:10
...

技术说明

FreeMarker模板引擎: 即一种基于模板和要改变的数据,
并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件(主要应用于生成HTML,使用过springboot框架的朋友应该知道template,他们的功能是类似的)。
api:http://freemarker.foofun.cn/

使用场景

业务需求:提供脚本文件模版,根据数据动态的生成对应的可执行脚本文件.

实现效果

提供的脚本模版:
使用模版引擎FreeMarker生成sql脚本
生成的脚本文件:
使用模版引擎FreeMarker生成sql脚本

具体实现

springboot引入依赖

<!-- 引入freemarker依赖 -->
<dependency>
 <groupId>org.freemarker</groupId>
 <artifactId>freemarker</artifactId>
 <version>2.3.23</version>
</dependency>

代码实现

/**
  * 获取文件模版
  * @throws Exception
  */
public static void getFile() throws Exception {
    // 第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。
    Configuration configuration = new Configuration(Configuration.getVersion());
    // 第二步:设置模板文件所在的路径。
    configuration.setDirectoryForTemplateLoading(new File("测试文件地址"));
    // 第三步:设置模板文件使用的字符集。一般就是utf-8.
    configuration.setDefaultEncoding("utf-8");
    //configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
    // 第四步:加载一个模板,创建一个模板对象。
    Template template = configuration.getTemplate("table_ddl.sql");
    //template.set
    // 第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。
    Map<String,Object> dataModel = new HashMap<>();
    List<DaSrcColumn> list = new ArrayList<>();
    for(int i=1;i<=5;i++) {
     DaSrcColumn dsc = new DaSrcColumn();
     dsc.setColumnName("column"+i);
     dsc.setColumnType("type"+i);
     dsc.setColumnCnName("字段"+i);
     dsc.setTableName("user_table"+i);
     list.add(dsc);
    }
    
    //向数据集中添加数据
    dataModel.put("itl_table_name", "user_table1");
    //设置不替换的变量
    dataModel.put("itl_schema", "${itl_schema}");
    dataModel.put("iol_schema", "${iol_schema}");
    dataModel.put("etl_dt", "${etl_dt}");
    dataModel.put("min_dt", "${min_dt}");
    dataModel.put("date_format", "yyyy-MM-dd");
    dataModel.put("itl_table_cn_name", "中文名");
    //设置循环的数据集合
    dataModel.put("columns",list);
    // 第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名。
    Writer out = new FileWriter(new File("输出文件地址\\table_ddl_create.sql"));
    // 第七步:调用模板对象的process方法输出文件。
    template.process(dataModel, out);
    // 第八步:关闭流。
    out.close();
}

//测试方法
public static void main(String[] args) {
     try {
	  getFile(); 
     } catch (Exception e) {
	  e.printStackTrace();    
     }
}

小结

虽然只是在java中使用模板引擎,但是却对前端页面有了更深层次的理解,前端页面的动态生成,都需要使用到模板引擎。
模板引擎的使用场景很多,这只是最基本的使用,更复杂的使用还需要根据API对模板进行调整。

相关标签: 模板引擎