基于FreeMarker和DBUtils的JavaWeb代码生成器二
相关博客
基于FreeMarker和DBUtils的JavaWeb代码生成器 一 基于FreeMarker和DBUtils的JavaWeb代码生成器 二 基于FreeMarker和DBUtils的JavaWeb代码生成器 三 源代码下载地址:DBUtilsGenerator
1、用来生成代码文件的Freemarker工具类:FreemarkerUtil.javapublic class FreemarkerUtil {
public static void execute(String ftlNameWithPath, Map data, Writer out) throws IOException, TemplateException {
Configuration cfg = new Configuration(Configuration.VERSION_2_3_25);//创建Freemarker配置实例
int i = ftlNameWithPath.lastIndexOf("/") == -1 ? ftlNameWithPath.lastIndexOf("\\") : ftlNameWithPath.lastIndexOf("/");
cfg.setDirectoryForTemplateLoading(new File(ftlNameWithPath.substring(0, i + 1)));
cfg.setDefaultEncoding("UTF-8");
Template t1 = cfg.getTemplate(ftlNameWithPath.substring(i + 1));//加载模板文件
t1.process(data, out);
out.flush();
}
}
2、具体的Freemarker模板文件
- 1)entity.ftl
package ${pkg}; import ${importItem}; public class ${clazzName} { /** * ${property.comment} */ private ${property.javaType} ${property.propertyName}; public ${clazzName}(){ } public ${clazzName}(${prop.javaType} ${prop.propertyName}, ){ this.${prop.propertyName}=${prop.propertyName}; } public ${prop.javaType} get${prop.propertyName?cap_first}(){ return this.${prop.propertyName}; } public void set${prop.propertyName?cap_first}(${prop.javaType} ${prop.propertyName}){ this.${prop.propertyName} = ${prop.propertyName}; } @Override public String toString() { return "${clazzName}{" + ", ${prop.propertyName}=" + ${prop.propertyName} + '}'; } 外键相关 / private ${k} ${k?uncap_first}; public ${k} get${k}(){ return this.${k?uncap_first}; } public void set${k}(${k} ${k?uncap_first}){ this.${k?uncap_first} = ${k?uncap_first}; } }
- 2)dao.ftl
package ${pkg}; import ${clazzNameWithPkg}; import java.util.List; import java.sql.SQLException; import ${pageParamWithPkg}; public interface ${clazzName}Dao { int insert${clazzName}(${clazzName} ${clazzName?uncap_first}) throws SQLException; int batchInsert${clazzName}(List ${clazzName?uncap_first}List) throws SQLException; int delete${clazzName}By${pk?cap_first}(${pkType} ${pk}) throws SQLException; int delete${clazzName}ByCondition(${clazzName} ${clazzName?uncap_first}) throws SQLException; int batchDelete${clazzName}By${pk?cap_first}s(String ${pk}s) throws SQLException; int update${clazzName}(${clazzName} ${clazzName?uncap_first}) throws SQLException; long selectCount() throws SQLException; long selectCountByCondition(${clazzName} ${clazzName?uncap_first}) throws SQLException; ${clazzName} select${clazzName}By${pk?cap_first}(${pkType} ${pk}) throws SQLException; List selectAll${clazzName}() throws SQLException; List select${clazzName}ByCondition(${clazzName} ${clazzName?uncap_first}) throws SQLException; List select${clazzName}WithPagination(PageParam pageParam) throws SQLException; List select${clazzName}WithPaginationByCondition(PageParam pageParam, ${clazzName} ${clazzName?uncap_first}) throws SQLException; List select${clazzName}By${item.propertyName?cap_first}(${item.javaType} ${item.propertyName}) throws SQLException; }
- 3)daoImpl.ftl
package ${pkg}; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import ${clazzNameWithPkg}; import java.util.List; import java.util.ArrayList; import ${dbutil}; import ${daoNameWithPkg}; import java.sql.SQLException; import ${pageParamWithPkg}; public class ${clazzName}DaoImpl implements ${clazzName}Dao { private QueryRunner queryRunner = DBUtil.getRunner(); @Override public int insert${clazzName}(${clazzName} ${clazzName?uncap_first}) throws SQLException{ String sql ="insert into ${tableName} ${fieldStr} values ${wenHaoStr}"; return queryRunner.update(sql ,${valueStr}); } @Override public int batchInsert${clazzName}(List ${clazzName?uncap_first}List) throws SQLException{ Object[][] params = new Object[${clazzName?uncap_first}List.size()][${propertyList?size}]; for (int i = 0; i
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?