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>();
/**@模板所在文件夹路径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 );
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); }