使用FreeMarker生成模板代码

在平时开发过程中,一般都是需要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项目,项目结构如下
在这里插入图片描述
各位小伙伴如果有什么问题,请写在评论上

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值