freemarker mysql 生成bean_使用Freemarker模板自动生成代码

前言

因感概业务代码存在大量的增删改查功能,只是针对不同的表数据而已。故想有没有办法,在重复的相同代码中替换某些内容,于是按此思路搜寻,了解到有freemarker这个东西,一番学习后,特记录于此。

Freemarker简介

FreeMarker是一款模板引擎: 一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。即:输出=模板+数据。简单来说,其用法原理类似String的replace方法,或MessageFormat的format方法,都是在一定的代码中改变(替换)某些内容。不过FreeMarker更加强大,模板来源可以是外部文件或字符串格式,替换的数据格式多样,而且支持逻辑判断,如此替换的内容将更加灵活。

小例子

比如我们要产生实体类,我们将模板定义如下,模板文件名为entity.flt(flt是freemarker模板的后缀名)

package com.tenny.${interfaceName?lower_case}.entity;

import java.util.Date;

public class ${entityName} {

// ${param.fieldNote}

private ${param.fieldType} ${param.fieldName};

#list>

public void set${param.fieldName?cap_first}(${param.fieldType} ${param.fieldName}){

this.${param.fieldName} = ${param.fieldName};

}

public ${param.fieldType} get${param.fieldName?cap_first}(){

return this.${param.fieldName};

}

#list>

}

其中的${xxx}就是变量了,由外部传入。可以看到模板还有类似java for each循环的语法。

接下来我们要填充数据了。数据来源后面详细说,先假定我们有了数据。其格式为Map,内容为:

Map beanMap = new HashMap();

beanMap.put("beanName", "User");// 实体类名

beanMap.put("interfaceName", "User");// 接口名

List> paramsList = new ArrayList>();

for (int i = 0; i < 4; i++) {

Map tmpParamMap = new HashMap();

tmpParamMap.put("fieldNote", "fieldNote" + i);

tmpParamMap.put("fieldType", "String");

tmpParamMap.put("fieldName", "fieldName" + i);

paramsList.add(tmpParamMap);

}

beanMap.put("params", paramsList);

最后我们使用模板替换数据(这里我的模板放在resources/model/下,目标文件放在resources/class/下):

Configuration config = new Configuration();

config.setObjectWrapper(new DefaultObjectWrapper());

Template template = config.getTemplate("

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值