如果能把项目中大量的代码编写工作变得轻松,是多好的一件事!
在velocity出现之后,我突然有个想法,利用velocity这个优秀的模板引擎,把开发项目中的重复代码让它自动生成
生成之后的基础代码,按照实际的需求稍作修改便可以运行,极大的提高工作效率。
于是写了这个代码生成工具(代码生成的模板引擎部分是在以前一位同事的代码基础上扩展的)
目前第二版,是读取指定数据种类和数据库的表,把每个表按照模块生成三层结构的代码
包括:bean,controller,service,serviceimpl,dao,daoimpl
缺点与不足在于 与模板文件耦合度较高,模块文件只能在我提供的模板上做少量修改
以前第一版时是读取一个项目中的bean这个包的JavaBean,把每个bean按照模块生成三层结构的代码
而且javaBean要预先使用myeclipse等工具从数据库导出javaBean或者手工写javaBean
使用注意事项:
1.准备好数据库以及JDBC驱动包
2.数据库中建好项目所用的表
3.目前只能使用我提供的示例模板文件(以vm为扩展名的文件),可作少量修改
gavin(张逸轩) QQ 106128696
部分代码如下
List
<
String
>
list
=
tableNames;
if (list == null || list.size() == 0 ) ... {
throw new Exception("无法创建Javabean");
}
completeStatus = false ;
int listSize = list.size();
totalFileCount = listSize * taskList.size();
int taskSize = taskList.size();
BeanUtil beanUtil = new BeanUtil();
for ( int k = 0 ;k < taskSize;k ++ ) ... {
if(threadStatus.equals(ThreadStatus.Stop))
break;
while(threadStatus.equals(ThreadStatus.Pause))...{
Thread.sleep(100);
}
String directoryName = "";
String fileName = "";
directoryName = splitDirectory(taskList.get(k)[1], false);
for (int i = 0; i < listSize; i++) ...{
if(threadStatus.equals(ThreadStatus.Stop))
break;
while(threadStatus.equals(ThreadStatus.Pause))...{
Thread.sleep(100);
}
String beanFileName = list.get(i);
VelocityContext context = new VelocityContext();
context.put("name", beanFileName);
context.put("packageName", taskList.get(k)[1]);
//create Bean
if(k==0)...{
List<FieldInfo> beanFieldList = beanUtil.getBeanInfo(beanFileName);
context.put("beanFieldList",beanFieldList);
}else...{
String lowerCaseFileName = beanFileName.substring(0, 1)
.toLowerCase()
+ beanFileName.substring(1);
context.put("parameter", lowerCaseFileName);
context.put("modeName", modeName);
context.put("pack", bean);
}
Template template = null;
template = Velocity.getTemplate(taskList.get(k)[0]);
fileName = directoryName + File.separator + beanFileName + taskList.get(k)[2]
+ ".java";
File directoryFile = new File(directoryName);
this.out(outPanel, "创建文件:......" + fileName
+ " ");
bar.setValue(1000*(k*listSize+(i+1))/totalFileCount);
if (!directoryFile.exists()) ...{
this.out(outPanel, "创建目录:......" + directoryFile
+ " ");
directoryFile.mkdirs();
}
BufferedWriter writer = new BufferedWriter(
new FileWriter(fileName));
if (template != null)
template.merge(context, writer);
writer.flush();
writer.close();
}
}
if (threadStatus.equals(ThreadStatus.Run))
completeStatus = true ;
if (list == null || list.size() == 0 ) ... {
throw new Exception("无法创建Javabean");
}
completeStatus = false ;
int listSize = list.size();
totalFileCount = listSize * taskList.size();
int taskSize = taskList.size();
BeanUtil beanUtil = new BeanUtil();
for ( int k = 0 ;k < taskSize;k ++ ) ... {
if(threadStatus.equals(ThreadStatus.Stop))
break;
while(threadStatus.equals(ThreadStatus.Pause))...{
Thread.sleep(100);
}
String directoryName = "";
String fileName = "";
directoryName = splitDirectory(taskList.get(k)[1], false);
for (int i = 0; i < listSize; i++) ...{
if(threadStatus.equals(ThreadStatus.Stop))
break;
while(threadStatus.equals(ThreadStatus.Pause))...{
Thread.sleep(100);
}
String beanFileName = list.get(i);
VelocityContext context = new VelocityContext();
context.put("name", beanFileName);
context.put("packageName", taskList.get(k)[1]);
//create Bean
if(k==0)...{
List<FieldInfo> beanFieldList = beanUtil.getBeanInfo(beanFileName);
context.put("beanFieldList",beanFieldList);
}else...{
String lowerCaseFileName = beanFileName.substring(0, 1)
.toLowerCase()
+ beanFileName.substring(1);
context.put("parameter", lowerCaseFileName);
context.put("modeName", modeName);
context.put("pack", bean);
}
Template template = null;
template = Velocity.getTemplate(taskList.get(k)[0]);
fileName = directoryName + File.separator + beanFileName + taskList.get(k)[2]
+ ".java";
File directoryFile = new File(directoryName);
this.out(outPanel, "创建文件:......" + fileName
+ " ");
bar.setValue(1000*(k*listSize+(i+1))/totalFileCount);
if (!directoryFile.exists()) ...{
this.out(outPanel, "创建目录:......" + directoryFile
+ " ");
directoryFile.mkdirs();
}
BufferedWriter writer = new BufferedWriter(
new FileWriter(fileName));
if (template != null)
template.merge(context, writer);
writer.flush();
writer.close();
}
}
if (threadStatus.equals(ThreadStatus.Run))
completeStatus = true ;
12115326935.rar