我是靠谱客的博主 难过眼睛,最近开发中收集的这篇文章主要介绍代码生成器的步骤,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

代码生成器可以实现快速开发

如果添加部门模型,复制IDepartmentService,修改类名,ctrl+f,进行人工替换

代码生成器就是先定义好模板,然后使用代码自动修改类名,进行名称的自动替换

 

关键:先备份一下项目

 

1.那些模型需要生成代码:先用一个临时模型Dept,进行测试

2.有那些模板要生成:添加类或者jsp,xml,js

3.上面的面板生成到那个文件夹

 

 

4.定义一下常量,规定文件夹的位置

  格式:全部都是以相对位置开始,前面没有/

        以/结尾

5.外循环:模型数组

6.内循环:模板或者文件夹

7.Velocity上下文

8.添加数据到Velocity上下文:大小写

9.获取模板

10.实例化File对象,打印输出绝对路径:步骤11之后

11.处理特殊的文件名称或者位置

12.实例化FileWriter

13.合并模板,关闭流

14.创建父目录

15.如果已经存在的文件,默认是不生成的,防止覆盖,千万不要用Employee来测试

 

 

package cn.itsource.pss;
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 CreateCodeTest {
// 15.如果已经存在的文件,默认是不生成的,防止覆盖,千万不要用Employee来测试
// 规则flag = false,不覆盖,
// 规则flag = true,覆盖,
private boolean flag = false;
// 1.定义路径固定值
// *********************规则:路径前面不要写/,后面结尾必须写/
private String SRC = "src/main/java/";
// 容易写错的地方:不能包路径,必须是文件路径
private String PACKAGE = "cn/itsource/pss/";
private String RESOURCES = "src/main/resources/";
private String TEST = "src/test/java/";
private String WEBAPP = "src/main/webapp/";
// 2.定义那些domain需要生成代码
// private String[] domains = { "Department" };
private String[] domains = { "Role", "Permission" };
// 3.定义模板的名称
private String[] templates = { "Service.java", "ServiceImpl.java", "Query.java", "Action.java", "ServiceTest.java",
"hbm.xml", "Context.xml", "domain.js", "list.jsp", "input.jsp" };
// 4.定义模板对应生成文件的位置
private String[] files = { SRC + PACKAGE + "service/", SRC + PACKAGE + "service/impl/", SRC + PACKAGE + "query/",
SRC + PACKAGE + "web/action/", TEST + PACKAGE + "service/", RESOURCES + PACKAGE + "domain/",
RESOURCES + "manager/", WEBAPP + "js/model/", WEBAPP + "WEB-INF/views/", WEBAPP + "WEB-INF/views/" };
@Test
public void create() throws Exception {
if (templates.length != files.length) {
throw new RuntimeException("模板!=模板对应生成文件");
}
// 实例化Velocity上下文对象
VelocityContext context = new VelocityContext();
// 5.外循环
for (int i = 0; i < domains.length; i++) {
// 准备数据,类似于struts放入值栈:String getText(){ return "xxxx"}
context.put("domainEntity", domains[i]);
// 获取domain模型首字母小写
String lowerDomainEntity = domains[i].substring(0, 1).toLowerCase() + domains[i].substring(1);
context.put("lowerDomainEntity", lowerDomainEntity);
// 6.内循环
for (int j = 0; j < templates.length; j++) {
// src/main/java/cn/itsource/pss/DeptService.java
File file = new File(files[j] + domains[i] + templates[j]);
if ("Service.java".equals(templates[j])) {
file = new File(files[j] + "I" + domains[i] + templates[j]);
} else if ("hbm.xml".equals(templates[j])) {
file = new File(files[j] + domains[i] + "." + templates[j]);
} else if ("domain.js".equals(templates[j])) {
file = new File(files[j] + lowerDomainEntity + ".js");
} else if ("list.jsp".equals(templates[j])) {
file = new File(files[j] + lowerDomainEntity + "/" + lowerDomainEntity + ".jsp");
} else if ("input.jsp".equals(templates[j])) {
file = new File(files[j] + lowerDomainEntity + "/" + lowerDomainEntity + "_input.jsp");
}
// 规则flag = false,不覆盖,
// 规则flag = true,覆盖,
// 如果不覆盖并且代码文件已经存在:不需要生成
if (!flag && file.exists()) {
// return;
// break;
continue; // 结束本次循环,进入下一次循环

}
// 打印必须在修改路径之后

System.out.println(file.getAbsolutePath());
// 生成没有的路径
File parentFile = file.getParentFile();
if (!parentFile.exists()) {
parentFile.mkdirs();
}
FileWriter writer = new FileWriter(file);
Template template = Velocity.getTemplate("template/" + templates[j], "UTF-8");
template.merge(context, writer);
// 关闭流

writer.close();
}
}
System.out.println("先刷新工程,没有错误,修改映射文件,运行测试,启动tomcat");
}
}

 

转载于:https://www.cnblogs.com/1443188449qq/p/8863566.html

最后

以上就是难过眼睛为你收集整理的代码生成器的步骤的全部内容,希望文章能够帮你解决代码生成器的步骤所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部