工作中无可避免的有很多重复的增删改查,枯燥无味,作为一个牛逼的开发人员,重复的事情要交给程序去干
可以使用模板方式,把重复的任务做成模板,批量生成,freemark大家都比较熟悉就它了, 一直比较喜欢intellij idea,就来弄个intellij idea的插件吧。想想 像生成get set 方法一样快速生成还是蛮激动的。
比较简单了解插件的开发步骤很快就差不多了, intellij自己抽象了一层类似文件,类的东西
获取到这些,剩下的就很简单了,设置需要的模板参数,交给freemark用指定模板生成文件就好了
这里获取配置文件需要注意一下,因为插件开发完成 是要打成zip的包来发布安装的,里面是打成了jar,可能你调试时没问题,但实际使用可能会获取不到正确的路径, 大家应该知道获取jar包中的配置文件是比较麻烦的事情可以参考 这片文章 而这里还有点麻烦,freemark 设置模板文件目录只支持File(没找到支持流的方式)
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(file);
所以
InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");
这种方法获取配置也不合适,最后只能从总工程目录扫描约定的文件夹名称来解决了。
好了,源码比较少在这里 https://github.com/waykingjava/fast-create.git
依赖freeMark模板引擎生成对应文件
在工程下新建fast-template文件夹
创建工程模板类文件
package ${package};
import java.io.Serializable;
import java.util.Date;
/**
* Created by ${user} on ${.now}
*/
public class ${modelName}DTO implements Serializable {
<#list fields as attr>
private ${attr.type} ${attr.name};
</#list>
<#list fields as attr>
/**
* set${attr.name?cap_first}
*/
public void set${attr.name?cap_first}(${attr.type} ${attr.name}){
this.${attr.name}=${attr.name};
}
/**
* get${attr.name?cap_first}
*/
public ${attr.type} get${attr.name?cap_first}(){
return ${attr.name};
}
</#list>
}
在User上执行
public class User {
private String userName;
private String userPwd;
}
生成后的类
public class UserDTO implements Serializable {
private String userName;
private String userPwd;
/**
* setUserName
*/
public void setUserName(String userName){
this.userName=userName;
}
/**
* getUserName
*/
public String getUserName(){
return userName;
}
/**
* setUserPwd
*/
public void setUserPwd(String userPwd){
this.userPwd=userPwd;
}
/**
* getUserPwd
*/
public String getUserPwd(){
return userPwd;
}
}
现在基本是对某meta快速生成增删改查。
我们现在分的层次 Controller->manager->service->dao中间需要有对应的vo、bo、dto、meta,对应的各个o的转换,感受下如果我现在要简单的加张表,我需要做些什么,之前都是复制粘贴过来,全局根据meta类名称更改名称,但是比较容易出错,而且经常要睡着。
现在做了下模板,以后只要数据建模完成,fast-create一下什么都有啦,再根据自己的业务对方法增加逻辑即可
好了,最后,虽然还有很多不足,但是起码已经帮我做了很多事情,只要痛苦一次把模板创建完成,后面这些重复的工作就可以一键搞定啦,这样才有更多的时间悄悄的搞一些不为人知的事情。 如果你有需要可以自己修改源码创作自己的插件,如果只想体验使用一下可以这里下载
如果你有好的建议,欢迎反馈。
本文来自网易实践者社区,经作者张昌路授权发布。