java代码自动生成三(freemarker)

接上一篇博客http://xinyangwjb.iteye.com/blog/1420708
将表信息转化成java文件,第一件事是列名与java字段名的转化:
      按照java编程习惯,如果属性名有两个以上字母组成,则从第二个字母开始,首字母必须大写。
      因此如果列名为import_count,要去掉下划线,转化为importCount属性名。
      如果数据库名本身就是importCount,则可以直接将列名赋值给属性名。
      Date类型默认是java.sql.Date,需要先转化为java.util.Date,
      number类型默认是java.math.BigDecimal,需要先转化为java.lang.Long
第二件事是定义一个

Map<String,Object> rootData = new HashMap<String,Object>();

将所有要往flt模板中填的字段都塞进这个rootData,这根据不同人的编码习惯自定义。这是个超级体力活!!!模板中的字段要一点点拼出来。
第三件事是启用freemarker的模板功能,将自定义的填充字段塞进flt模板中

/**@模板所在文件夹路径templatePath
 *@模板名templateName
 *@fileName新建java文件所在文件夹路径 
 *@rootData往flt模板中填的Map数据
*/
freemarker.template.Configuration config = new    freemarker.template.Configuration(); 
          config.setDirectoryForTemplateLoading(new File(templatePath));   
          config.setObjectWrapper(new DefaultObjectWrapper());
          FileOutputStream fos = new FileOutputStream(fileName);
          Writer writer = new OutputStreamWriter(,"UTF-8");
          template.process(rootData , writer );

到这里算完成了,但是flt的编写也是非常累的体力活 我先写了一个dao.flt
package ${packageName}.dao;

import ${packageName}.${moduleName};
import java.util.List;
import java.util.Map;

public interface ${moduleName}DAO 
{
	/**
     *
     * @${author} ${datetime}
     */
    public Long add${moduleName}(${moduleName} example);

    /**
     *
     * @${author} ${datetime}
     */
    public boolean deleteByPrimaryKey(${primaryFiled.fieldJavaType} ${primaryFiled.fieldName});
    
    /**
     *
     * @${author} ${datetime}
     */
    public boolean update${moduleName}( ${moduleName} example);
    
    /**
     *
     * @${author} ${datetime}
     */
    public ${moduleName} get${moduleName}ById(Long id);
    /**
     *
     * @${author} ${datetime}
     */
    public PageInfo<${moduleName}> get${moduleName}List(${moduleName} example);
    /**
     *
     * @${author} ${datetime}
     */
    public int delete${moduleName}ByIds(String ids);
    
}

总之实现技术很简单,但是ftl模板和往模板中填充的数据的拼接是个超级体力活,我估计需要一个月的业余时间来实现这些东西!!!

你可能感兴趣的:(freemarker)