代码生成器
package com.liuzm.mypss.test; import java.io.File; import java.io.FileWriter; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.junit.Test; public class TemplateTest { // 开关:默认情况下已经存在的文件不需要生成代码 // true:覆盖所有代码 private static final boolean flag = false; // 1.那些domain需要生成代码 private String[] domains = { "Product", "ProductType", "PurchaseBill", "PurchaseBillItem", "Supplier","SystemDictionaryDetail","SystemDictionaryType" }; // 2.定义固定的目录路径:都是使用相对路径,规范:路径前面都不加/,路径的后面都加/ private static final String JAVA = "src/main/java/"; private static final String RESOURCES = "src/main/resources/"; private static final String TEST = "test/main/java/"; private static final String PACKAGE = "com/liuzm/mypss/"; private static final String JS = "src/main/webapp/js/"; private static final String VIEWS = "src/main/webapp/WEB-INF/views/"; // 3.有那些模板需要生成 private String[] templates = { "Action.java", "hbm.xml", "input.jsp", "list.js", "list.jsp", "Manager.xml", "Query.java", "Service.java", "ServiceImpl.java", "ServiceTest.java" }; // 4.模板文件对应的生成文件路径 private String[] files = { JAVA + PACKAGE + "web/", RESOURCES + PACKAGE + "domain/", VIEWS, JS, VIEWS, RESOURCES + "manager/", JAVA + PACKAGE + "query/", JAVA + PACKAGE + "service/", JAVA + PACKAGE + "service/impl/", TEST + PACKAGE + "test/" }; @Test public void creatTemplate() throws Exception { if (templates.length != files.length) { throw new RuntimeException("模板数目和文件路径数目不匹配!"); } VelocityContext context = new VelocityContext(); // 5.外循环:domains for (int i = 0; i < domains.length; i++) { context.put("entity", domains[i]); // 6.处理domain首字母小写 String lowerEntity = domains[i].substring(0, 1).toLowerCase() + domains[i].substring(1); context.put("lowerEntity", lowerEntity); // 7.内循环:templates和files for (int j = 0; j < templates.length; j++) { Template template = Velocity.getTemplate("template/" + templates[j], "UTF-8"); // 8.实例化文件存放的路径 File file = new File(files[j] + domains[i] + templates[j]); // 9.处理特殊的文件名称l if ("hbm.xml".equals(templates[j])) { file = new File(files[j] + domains[i] + "." + templates[j]); } else if ("input.jsp".equals(templates[j])) { file = new File(files[j] + lowerEntity + "/" + lowerEntity + "-input.jsp"); } else if ("list.js".equals(templates[j])) { file = new File(files[j] + lowerEntity + ".js"); } else if ("list.jsp".equals(templates[j])) { file = new File(files[j] + lowerEntity + "/" + lowerEntity + ".jsp"); } else if ("Service.java".equals(templates[j])) { file = new File(files[j] + "I" + domains[i] + templates[j]); } System.out.println(file.getAbsolutePath()); // 开关:默认情况下已经存在的文件不需要生成代码 // true:覆盖所有代码 // 表示代码已经存在 并且flag=false,不生成代码 // 12.开关:默认情况下已经存在的文件不需要生成代码 true:覆盖所有代码 if (file.exists() && !flag) { continue; } // 10.判断父目录是否存在 File parentFile = file.getParentFile(); if (!parentFile.exists()) { parentFile.mkdirs(); } // 11.必须关闭流,写入内容 FileWriter writer = new FileWriter(file); template.merge(context, writer); writer.close(); } System.out.println("自动生成代码完毕,刷新工程,修改映射文件,运行测试!"); } } }
相关推荐
软件名称: 动软代码生成器 软件版本: 2.76 软件语言: 简体中文 运行环境: Win2003/XP/2000/WIN7 .NET Framework 2.0 版本更新: 1.完善数据库加载的用户体验。 2.完善代码生成的逻辑和bug。 3.完善local的...
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
自己写的小工具代码生成器瞬间生成代码自己写的小工具代码生成器瞬间生成代码自己写的小工具代码生成器瞬间生成代码自己写的小工具代码生成器瞬间生成代码
### SoEasyPlatform 代码生成器 ## 介绍 一款轻量级开源的代码生成器,相对较动软代码生成器而言要轻量的多,支持多种数据库,所用到dll组件也都在github有源码,代码非常的简单有点基础的看源码可以把生成的项目...
.net代码生成器 C#代码生成器内置辅助类!!!一键生成含所有源码!!!
SSH代码生成器
手写代码生成器 在我们介绍三层的时候,大家是不是发现我们写每一个功能的时候是不是非常的麻烦呢? 像其中的一个model,如果属性特别多的时候,写起来非常的慢。 像其中一些基本的功能我们可以使用代码生成器,...
最新版java代码生成器基于springMvc+mysql 后台功能一键生成 压缩包里的jdk文件目录 请自行下载jdk1.8.0_45版本并覆盖进去 没有jdk是运行不起来的 也可以下载其他jdk版本 但是jdk1.8.0_45这个文件目录名称不要更改 ...
四个代码生成器,主要是对数据库程序员的自动代码生成器
时空之门前端代码生成器,是第四代动词算子式代码生成器,经过彻底的重构的先进动词算子式代码生成器,也是专用的Vue+ElementUI前端代码生成器,可以和多种后端代码生成器搭配。和平之翼和光对前端代码生成的支持是...
人人代码生成器贼好用啊
动软代码生成器 V2.76版,请支持正版。 修改DAL.cmt模板文件: 1、必须增加该命名空间 using MySql.Data.MySqlClient; 2、部分的 SqlParameter 修改为 MySqlParameter 3、获取前几行数据时,修改为 limit 4、参数...
动态代码生成器动态代码生成器动态代码生成器动态代码生成器动态代码生成器动态代码生成器动态代码生成器
代码生成器代码生成器代码生成器代码生成器代码生成器
C#代码生成器,这个是自己写得一个代码生成器、方便底层效率不用花太多时间。。还有其他两个、可以去看下、
freemarker实现代码生成器详细教程
c#代码生成器,用于生成三层结构体系代码
ssm 代码生成器 ,后台代码一键生成器 springmvc mybatis spring
存储过程代码生成器存储过程代码生成器存储过程代码生成器存储过程代码生成器存储过程代码生成器存储过程代码生成器