Velocity
1.导包
<!-- 代码生成器模版技术 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.6</version>
</dependency>
2.准备模板
Employee------>Domain(注意大小写替换)
所有的(大写)Employee换成${Domain}
所有的(小写)employee换成${domain}
只留下一个最基础的name字段,其它的多余功能全部去掉
注意(Employee中关于部门的操作都需要去掉)
替换的位置$不要值不要出现前后空格
3.准备生成----->提前准备domain
public class MakeJavaCodeTest {
//生成路径
private static final String SRC = "src/main/java/";
private static final String PACKAGE = "cn/itsource/wy/";
private static final String TEST = "src/test/java/";
private static final String WEBAPP = "src/main/webapp/";
//准备路径
String[] paths = {SRC+PACKAGE+"query/",SRC+PACKAGE+"repository/",
SRC+PACKAGE+"service/",SRC+PACKAGE+"service/impl/",
SRC+PACKAGE+"web/controller/",TEST+PACKAGE+"test/",
WEBAPP+"WEB-INF/views/domain/",WEBAPP+"js/model/"
};
//准备文件名
String[] domainNames = {"DomainQuery.java","DomainRepository.java",
"IDomainService.java","DomainServiceImpl.java",
"DomainController.java","TestDomainService.java",
"domain.jsp","domain.js"};
//准备domin
String[] domains= {"Permission"};
//特别注意
//是否需要覆盖已经存在的文件 false代表不覆盖,一般就用这个
//true代表覆盖,危险操作
private static final boolean FLAG = false;
@Test
public void testMakeCode()throws Exception{
VelocityContext context = new VelocityContext();
//循环domains
for (int i=0;i<domains.length;i++) {
//大写domain名称
String domainBigName = domains[i];
//小写的名称
String domainSmallName = domainBigName.substring(0,1).toLowerCase()+domainBigName.substring(1);
context.put("Domain", domainBigName);
context.put("domain",domainSmallName);
for(int j=0;j<paths.length;j++){
String path = paths[j];
String domainName = domainNames[j];
//src/main/java/DeptQuery.java
String realPath = (path+domainName).replaceAll("Domain", domainBigName)
.replaceAll("domain", domainSmallName);
//生成文件:
Template template = Velocity.getTemplate("template/" + domainName, "UTF-8");
//文件准备
File file = new File(realPath);
// 如果文件存在,我们根据情况看是否需要覆盖
if (file.exists() && !FLAG){
return;
}
//如果父目录不存在 创建目录
File parentFile = file.getParentFile();
// 如果文件存在,我们根据情况看是否需要覆盖
if(!parentFile.exists()){
parentFile.mkdirs();
}
FileWriter fileWriter = new FileWriter(file);
template.merge(context, fileWriter);
fileWriter.close();
}
}
}
}
4.解决冲突domain.js
顶部加上:#set( $D = '$' ) -> 为$显示设置一个变量
进行替换
$( -> ${D}(
$. -> ${D}.
EasyCood
- 导包
- 准备模板
- 选中表右键生成
注意:生成路径