使⽤模版引擎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 Version());
// 第⼆步:设置模板⽂件所在的路径。
configuration.setDirectoryForTemplateLoading(new File("测试⽂件地址"));
// 第三步:设置模板⽂件使⽤的字符集。⼀般就是utf-8.
configuration.setDefaultEncoding("utf-8");
//configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
// 第四步:加载⼀个模板,创建⼀个模板对象。
Template template = Template("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对模板进⾏调整。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论