目录
1.前言
前段时间需要将前端配置的菜单信息保存到数据库,采用配置的方式,由后端返回。拿到前端给的js文件,需要将菜单信息转成sql插入到数据库。
生产环境有50多个菜单,测试环境有80多个,还是比较多的,手写一条条sql不太现实。解决方案是手动维护一个菜单json文件,然后生成可执行的insert语句,插入到数据库。
之前是通过java解析json文件,生成菜单list,然后根据菜单拼接可直接执行的sql语句,最后输出到控制台(菜单项过多,控制台无法完全显示时,可以选择输出到文件,默认为桌面)。
在看mybatis-plus-generator时发现使用的是模板方式生成的文件。刚好之前也没用过模板引擎,学习一下。
(与之前的区别:只是生成sql的方式改变了,之前是java代码拼接,现在使用velocity模板)
2.添加依赖
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
3.核心代码
这里的代码是抄的mybatis-plus-generator。
/**
*
* @param menuList 菜单列表
* @param templatePath 模板路径(classpath路径)
* @param outFileName 输出文件名称
* @throws Exception
*/
private void createWithTemplate(List<MenuBean> menuList, String templatePath, String outFileName) throws Exception {
String utf8 = "UTF-8";
Properties p = new Properties();
p.setProperty(Velocity.INPUT_ENCODING, utf8);
p.setProperty("resource.loader.file.unicode", "true");
p.setProperty("resource.loader.file.class",
"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
/**
* 自定义指令配置参数位置org.apache.velocity.runtime.RuntimeConstants.CUSTOM_DIRECTIVES
*
* 调用地方 org.apache.velocity.runtime.RuntimeInstance