首先建立一个模版文件。
当然freemark建议的是ftl结尾。其实这个是可以自己设定的。
这里需要根据需求添加的元素就用${}包含起来.然后在java文件中去添加就可以了。
如下:
/** * @title ${model_name}.java * @description * @create ${date?string("yyyy-MM-dd HH:mm:ss")} By ${author} * @package ${package_name} * @copyright Copyright (c) 2011-2012 ${link} . All right reserved * @version $Id$ * XYRJ-Java-Project */ package com.freemark.model; import java.util.List; import com.freemark.pojo.${model_pojo}; /** * * @description * * @classname ${model_name_cn} * @author ${author} * @date ${date?string("yyyy-MM-dd HH:mm:ss")} * @version 1.0 */ public class ${model_name} { /** * * 根据${model_name_cn}查找${model_name_cn}信息 * * @description * * @title find${model_pojo}ById * @author yangzhi<helloyangzhi@foxmail.com> * @param Long ${instant}Id * @return ${model_name} * @throws */ public ${model_name} find${model_pojo}ById(Long ${instant}Id) { return null; } /** * 批量物理删除${model_name_cn}(不可恢复) * @param ${instant}Ids ${model_name_cn}编号 * @throws DAOException */ public void delete${model_name_list}(Long[] ${instant}Ids) { } /** * 物理删除${model_name_cn}(不可恢复) * @param ${instant}Id ${model_name_cn}编号 * @throws DAOException */ public void delete${model_pojo}(Long ${instant}Id) { } /** * 保存${model_name_cn} * @param ${instant} * @throws DAOException */ public void save${model_pojo}(${model_pojo} ${instant}) { } /** * 更新${model_name_cn} * @param ${instant} * @throws DAOException */ public void update${model_pojo}(${model_pojo} ${instant}) { } /** * 利用hql语句查询${model_name_cn}信息 * @param hsql * @throws DAOException */ public List<${model_pojo}> find${model_name_list}(String hsql) { return null; } /** * 利用hql语句查询${model_name_cn}信息 * @param hsql * @throws DAOException */ public List<${model_pojo}> find${model_name_list}(String hsql,Object[] params) { return null; } }
这里需要引扩freemark.jar.然后在去写一个工具类,如下:
/** * @title Client.java * @description * @create 2013-4-7 ����03:22:56 By yangzhi * @package com.freemark * @copyright Copyright (c) 2011-2012 http://xyrj.hhtc.edu.cn.com. All right reserved * @version $Id$ * XYRJ-Java-Project */ package com.freemark; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Date; import java.util.HashMap; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.utility.Constants; /** * * @description * * @classname Client * @author yangzhi<helloyangzhi@foxmail.com> * @date 2013-4-7 下午04:37:38 * @version 1.0 */ public class Client { private Configuration cfg; public void init() throws Exception{ cfg = new Configuration(); //模版文件所在的目录 cfg.setDirectoryForTemplateLoading(new File("template//")); } /** * 建立模版 * * @description * * @title buildTemplate * @author yangzhi<helloyangzhi@foxmail.com> * @param @throws Exception * @return void * @throws */ public void buildTemplate() throws Exception { //设置root属性值 Map<String,Object> root = this.setRootVal(); //创建文件 this.createFile(root); } /** * 设置root的值 * * @description * * @title setRootVal * @author yangzhi<helloyangzhi@foxmail.com> * @param @return * @return Map<String,Object> * @throws */ @SuppressWarnings("serial") public Map<String,Object> setRootVal(){ Map<String,Object> root = new HashMap<String,Object>(){ { put("module","User"); put("model_name","UserModel"); put("model_pojo","UserPojo"); put("package_name","com.freemark.model"); put("model_name_list","Users"); put("instant","user"); put("model_name_cn","用户"); put("author","yangzhi"); put("link","www.helloyangzhi.com"); put("date",new Date()); } }; return root; } /** * 生成代码文件 * * @description * * @title createFile * @author yangzhi<helloyangzhi@foxmail.com> * @param @param root * @return void * @throws */ public void createFile(Map root) { try { //工程路径 //如果是web请求 //request.getRequestURI() //这里就用了一个绝对路径 String projectPath = "D://java//workspace//freemarkdemo//"; //文件名 String fileName = root.get("model_name")+ ".java"; //保存路径 String savePath = "src//com//freemark//model//"; //模版文件,后缀随意 Template template = cfg.getTemplate("HelloAction.temp"); String realFileName = projectPath + savePath + fileName; String realSavePath = projectPath + "/" + savePath; File newsDir = new File(realSavePath); if (!newsDir.exists()) { newsDir.mkdirs(); } Writer out = new OutputStreamWriter( new FileOutputStream(realFileName), "UTF-8"); template.process(root, out); } catch (Exception e) { e.printStackTrace(); } } /** * * * @description * * @title main * @author yangzhi<helloyangzhi@foxmail.com> * @param @param args * @param @throws Exception * @return void * @throws */ public static void main(String[] args) throws Exception { Client client = new Client(); client.init(); client.buildTemplate(); } }
运行之后就可以看到:
/** * @title UserModel.java * @description * @create 2013-04-07 21:31:12 By yangzhi * @package com.freemark.model * @copyright Copyright (c) 2011-2012 www.helloyangzhi.com . All right reserved * @version $Id$ * XYRJ-Java-Project */ package com.freemark.model; import java.util.List; import com.freemark.pojo.UserPojo; /** * * @description * * @classname 用户 * @author yangzhi * @date 2013-04-07 21:31:12 * @version 1.0 */ public class UserModel { /** * * 根据用户查找用户信息 * * @description * * @title findUserPojoById * @author yangzhi<helloyangzhi@foxmail.com> * @param Long userId * @return UserModel * @throws */ public UserModel findUserPojoById(Long userId) { return null; } /** * 批量物理删除用户(不可恢复) * @param userIds 用户编号 * @throws DAOException */ public void deleteUsers(Long[] userIds) { } /** * 物理删除用户(不可恢复) * @param userId 用户编号 * @throws DAOException */ public void deleteUserPojo(Long userId) { } /** * 保存用户 * @param user * @throws DAOException */ public void saveUserPojo(UserPojo user) { } /** * 更新用户 * @param user * @throws DAOException */ public void updateUserPojo(UserPojo user) { } /** * 利用hql语句查询用户信息 * @param hsql * @throws DAOException */ public List<UserPojo> findUsers(String hsql) { return null; } /** * 利用hql语句查询用户信息 * @param hsql * @throws DAOException */ public List<UserPojo> findUsers(String hsql,Object[] params) { return null; } }