在平时开发过程中,一般都是需要Dao层,Service层,而每一层当中都需要自己编写一部分常用代码,例如在Dao(基于Mybatis框架)层中编写返回值为List的方法用于查询数据库中数据,或者是add方法对数据库执行插入操作等一系列的方法,而且我们发现再换做另外一张表的时候也是这种操作,list,add。。。。。。
那么什么样的方式可以减少这种重复的工作呢?
FreeMarker可以做到,FreeMarker是一款基于模板和要改变数据的模板引擎,用于生成输出文本,他可以用于生成静态页面,同样也可以生成java代码,使用过程也很简单,首先使用它给出的标签制作对应的模板,然后调用给出的方法结合数据,生成最后的代码。
第一步:引入依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
第二步:编写模板
FreeMarker模板的编写依照本身提供的FreeMarker标签,标签以
符
号
开
头
,
例
如
:
符号开头,例如:
符号开头,例如:{名称},这里需要注意下,FreeMarker所生成的文件后缀名是ftl,下面代码的文件名就是Dao.ftl
package ${clsspath}
public interface ${daoName}Dao{
public ${daoName} selectOne(${daoName} ${daoName});
public List<${daoName}> selectAll(${daoName} ${daoName});
public int insert(${daoName} ${daoName});
public int update(${daoName} ${daoName});
}
同时FreeMarker也提供一些标签进行逻辑处理,比如if标签,list标签
<#if condition>...
<#elseif condition2>...
<#elseif condition3>......
<#else>...
<#list student as stu>
${stu}<br/>
</#list>
关于FreeMarker标签这里不做过多描述,有兴趣的小伙伴可以在网上看下相关博客
第三步:放入数据,根据数据生成对应文件
public void code() {
Configuration configuration = new Configuration(); // 创建对象
Map<String,Object> map = new HashMap<String, Object>();
map.put("clsspath", "com.bdqn.dao");
map.put("daoName", "User");
try {
String path = this.getClass().getClassLoader().getResource("").getPath();
//设置模板所在文件夹
configuration.setDirectoryForTemplateLoading(new File(path));
//配置文件所在位置
Template t = configuration.getTemplate("Dao.ftl");
//生成后代码所在位置
File docFile = new File("D:/code/UserDao.java");
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(docFile)));
t.process(map, out);
} catch (Exception e) {
e.printStackTrace();
}
}
好,剩下的就是在Main方法中调用上方方法,这里我是使用IDEA创建的Maven项目,项目结构如下
各位小伙伴如果有什么问题,请写在评论上