您的位置:首页 > 编程语言 > Java开发

利用Velocity自动生成自定义代码_java版_源码下载

2013-03-10 23:17 861 查看
项目结构:



运行效果:你可能会看到项目中有报错,不用着急,这个不会影响到你的项目运行。



把其中的User类拿出来,给大家分享一下:

自动生成UserDao.java效果:



[b]自动生成UserDaoImpl.java[/b]效果:



[b]自动生成UserService.java[/b]效果:



[b]自动生成UserServiceImpl.java[/b]效果:



我想大家看到这里,是不是有亲自动手试试的兴奋感觉....

=======================================================

代码部分:这个是对“自己写的一个代码自动生成工具_java版_源码下载”的改进

=======================================================

/AutomaticCodeGeneration/src/com/b510/base/bean/User.java

/**
*
*/
packagecom.b510.base.bean;

/**
*@authorhongten<br>
*@date2013-3-10
*/
publicclassUser{

}


/AutomaticCodeGeneration/src/com/b510/base/bean/install/Annotation.java

/**
*
*/
packagecom.b510.base.bean.install;

/**
*注释
*@authorhongten<br>
*@date2013-3-10
*/
publicclassAnnotation{

/**
*作者名称
*/
privateStringauthorName;
/**
*作者邮箱
*/
privateStringauthorMail;
/**
*日期
*/
privateStringdate;
/**
*版本
*/
privateStringversion;

publicStringgetAuthorName(){
returnauthorName;
}

publicvoidsetAuthorName(StringauthorName){
this.authorName=authorName;
}

publicStringgetAuthorMail(){
returnauthorMail;
}

publicvoidsetAuthorMail(StringauthorMail){
this.authorMail=authorMail;
}

publicStringgetDate(){
returndate;
}

publicvoidsetDate(Stringdate){
this.date=date;
}

publicStringgetVersion(){
returnversion;
}

publicvoidsetVersion(Stringversion){
this.version=version;
}

}


/AutomaticCodeGeneration/src/com/b510/base/bean/install/Bean.java

/**
*
*/
packagecom.b510.base.bean.install;

/**
*bean类
*
*@authorhongten<br>
*@date2013-3-10
*/
publicclassBean{

/**bean名称*/
privateStringname;
/**bean首字母小写名称*/
privateStringlowerName;
/**bean路径*/
privateStringbeanUrl;
/**dao路径*/
privateStringbeanDaoUrl;
/**dao实现路径*/
privateStringbeanDaoImplUrl;
/**service路径*/
privateStringbeanServiceUrl;
/**service实现路径*/
privateStringbeanServiceImplUrl;

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicStringgetLowerName(){
returnlowerName;
}

publicvoidsetLowerName(StringlowerName){
this.lowerName=lowerName;
}

publicStringgetBeanUrl(){
returnbeanUrl;
}

publicvoidsetBeanUrl(StringbeanUrl){
this.beanUrl=beanUrl;
}

publicStringgetBeanDaoUrl(){
returnbeanDaoUrl;
}

publicvoidsetBeanDaoUrl(StringbeanDaoUrl){
this.beanDaoUrl=beanDaoUrl;
}

publicStringgetBeanDaoImplUrl(){
returnbeanDaoImplUrl;
}

publicvoidsetBeanDaoImplUrl(StringbeanDaoImplUrl){
this.beanDaoImplUrl=beanDaoImplUrl;
}

publicStringgetBeanServiceUrl(){
returnbeanServiceUrl;
}

publicvoidsetBeanServiceUrl(StringbeanServiceUrl){
this.beanServiceUrl=beanServiceUrl;
}

publicStringgetBeanServiceImplUrl(){
returnbeanServiceImplUrl;
}

publicvoidsetBeanServiceImplUrl(StringbeanServiceImplUrl){
this.beanServiceImplUrl=beanServiceImplUrl;
}

}


/AutomaticCodeGeneration/src/com/b510/base/bean/install/BeanUtils.java

/**
*
*/
packagecom.b510.base.bean.install;

importjava.io.File;
importjava.io.FileWriter;
importjava.io.StringWriter;
importjava.text.SimpleDateFormat;
importjava.util.Date;

importorg.apache.velocity.Template;
importorg.apache.velocity.VelocityContext;
importorg.apache.velocity.app.VelocityEngine;

/**
*@authorhongten<br>
*@date2013-3-10
*/
publicclassBeanUtils{

publicstaticfinalStringBEAN_DAO_TEMPLATE_VM_PATH="src/vms/beanDao.vm";
publicstaticfinalStringBEAN_DAO_IMPL_TEMPLATE_VM_PATH="src/vms/beanDaoImpl.vm";
publicstaticfinalStringBEAN_SERVICE_TEMPLATE_VM_PATH="src/vms/beanService.vm";
publicstaticfinalStringBEAN_SERVICE_IMPL_TEMPLATE_VM_PATH="src/vms/beanServiceImpl.vm";

//文件地址
//privatestaticfinalStringBEAN_PATH="com/b510/base/bean";
privatestaticfinalStringDAO_PATH="com/b510/base/dao";
privatestaticfinalStringDAO_IMPL_PATH="com/b510/base/dao/impl";
privatestaticfinalStringSERVICE_PATH="com/b510/base/service";
privatestaticfinalStringSERVICE_IMPL_PATH="com/b510/base/service/impl";

//包名
privatestaticfinalStringBEAN_URL="com.b510.base.bean";
privatestaticfinalStringDAO_URL="com.b510.base.dao";
privatestaticfinalStringDAO_IMPL_URL="com.b510.base.dao.impl";
privatestaticfinalStringSERVICE_URL="com.b510.base.service";
privatestaticfinalStringSERVICE_IMPL_URL="com.b510.base.service.impl";

privatestaticBeanbean=newBean();
privatestaticAnnotationannotation=newAnnotation();

/**
*初始化bean和注解
*@paramc
*/
publicvoidinit(Classc){
if(c!=null){
StringcName=c.getName();
bean.setName(getLastChar(cName));
bean.setBeanUrl(cName);
bean.setLowerName(getLowercaseChar(getLastChar(cName)));

annotation.setAuthorName("hongten");
annotation.setAuthorMail("hongtenzone@foxmail.com");
SimpleDateFormatsimpleDateFormat=newSimpleDateFormat(
"yyyy-MM-dd");
annotation.setDate(simpleDateFormat.format(newDate()));
annotation.setVersion("1.0");
}
}

/**
*创建bean的Dao<br>
*
*@paramc
*@throwsException
*/
publicvoidcreateBeanDao(Classc)throwsException{
StringcName=c.getName();
Stringpath=System.getProperty("user.dir")+"/src/"+DAO_PATH
+"/";
FilefilePath=newFile(path);
createFilePath(filePath);

StringfileName=path+getLastChar(cName)+"Dao.java";
Filefile=newFile(fileName);
FileWriterfw=newFileWriter(file);

bean.setBeanDaoUrl(DAO_URL);

fw.write(createCode(BEAN_DAO_TEMPLATE_VM_PATH,bean,annotation));
fw.flush();
fw.close();
showInfo(fileName);
}

/**
*创建bean的Dao的实现<br>
*
*@paramc
*@throwsException
*/
publicvoidcreateBeanDaoImpl(Classc)throwsException{
StringcName=c.getName();
Stringpath=System.getProperty("user.dir")+"/src/"+DAO_IMPL_PATH
+"/";
FilefilePath=newFile(path);
createFilePath(filePath);

StringfileName=path+getLastChar(cName)+"DaoImpl.java";
Filefile=newFile(fileName);
FileWriterfw=newFileWriter(file);

bean.setBeanDaoUrl(DAO_URL);
bean.setBeanDaoImplUrl(DAO_IMPL_URL);

fw.write(createCode(BEAN_DAO_IMPL_TEMPLATE_VM_PATH,bean,annotation));
fw.flush();
fw.close();
showInfo(fileName);
}

/**
*创建bean的Service<br>
*
*@paramc
*@throwsException
*/
publicvoidcreateBeanService(Classc)throwsException{
StringcName=c.getName();
Stringpath=System.getProperty("user.dir")+"/src/"+SERVICE_PATH
+"/";
FilefilePath=newFile(path);
createFilePath(filePath);

StringfileName=path+getLastChar(cName)+"Service.java";
Filefile=newFile(fileName);
FileWriterfw=newFileWriter(file);

bean.setBeanServiceUrl(SERVICE_URL);

fw.write(createCode(BEAN_SERVICE_TEMPLATE_VM_PATH,bean,annotation));
fw.flush();
fw.close();
showInfo(fileName);
}

/**
*创建bean的Service的实现<br>
*
*@paramc
*@throwsException
*/
publicvoidcreateBeanServiceImpl(Classc)throwsException{
StringcName=c.getName();
Stringpath=System.getProperty("user.dir")+"/src/"+SERVICE_IMPL_PATH
+"/";
FilefilePath=newFile(path);
createFilePath(filePath);

StringfileName=path+getLastChar(cName)+"ServiceImpl.java";
Filefile=newFile(fileName);
FileWriterfw=newFileWriter(file);

bean.setBeanDaoUrl(DAO_URL);
bean.setBeanServiceUrl(SERVICE_URL);
bean.setBeanServiceImplUrl(SERVICE_IMPL_URL);

fw.write(createCode(BEAN_SERVICE_IMPL_TEMPLATE_VM_PATH,bean,annotation));
fw.flush();
fw.close();
showInfo(fileName);
}

/**
*根据模板生成代码
*@paramfileVMPath模板路径
*@parambean目标bean
*@paramannotation注释
*@return
*@throwsException
*/
publicStringcreateCode(StringfileVMPath,Beanbean,Annotationannotation)throwsException{
VelocityEnginevelocityEngine=newVelocityEngine();
velocityEngine.setProperty("input.encoding","UTF-8");
velocityEngine.setProperty("output.encoding","UTF-8");
velocityEngine.init();
Templatetemplate=velocityEngine.getTemplate(fileVMPath);
VelocityContextvelocityContext=newVelocityContext();
velocityContext.put("bean",bean);
velocityContext.put("annotation",annotation);
StringWriterstringWriter=newStringWriter();
template.merge(velocityContext,stringWriter);
returnstringWriter.toString();
}

/**
*创建文件
*@paramfile
*/
publicvoidcreateFilePath(Filefile){
if(!file.exists()){
System.out.println("创建["+file.getAbsolutePath()+"]情况:"+file.mkdirs());
}else{
System.out.println("存在目录:"+file.getAbsolutePath());
}
}

/**
*获取路径的最后面字符串<br>
*如:<br>
*<code>str="com.b510.base.bean.User"</code><br>
*<code>return"User";<code>
*@paramstr
*@return
*/
publicStringgetLastChar(Stringstr){
if((str!=null)&&(str.length()>0)){
intdot=str.lastIndexOf('.');
if((dot>-1)&&(dot<(str.length()-1))){
returnstr.substring(dot+1);
}
}
returnstr;
}

/**
*把第一个字母变为小写<br>
*如:<br>
*<code>str="UserDao";</code><br>
*<code>return"userDao";</code>
*@paramstr
*@return
*/
publicStringgetLowercaseChar(Stringstr){
returnstr.substring(0,1).toLowerCase()+str.substring(1);
}

/**
*显示信息
*@paraminfo
*/
publicvoidshowInfo(Stringinfo){
System.out.println("创建文件:"+info+"成功!");
}

/**
*获取系统时间
*@return
*/
publicstaticStringgetDate(){
SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyy-MM-dd");
returnsimpleDateFormat.format(newDate());
}
}


/AutomaticCodeGeneration/src/com/b510/base/bean/install/BeanUtilsTest.java

/**
*
*/
packagecom.b510.base.bean.install;

importcom.b510.base.bean.Admin;
importcom.b510.base.bean.People;
importcom.b510.base.bean.User;

/**
*@authorhongten<br>
*@date2013-3-10
*/
publicclassBeanUtilsTest{
publicstaticvoidmain(String[]args)throwsException{
BeanUtilsTestbeanUtilTest=newBeanUtilsTest();
BeanUtilsbeanUtils=newBeanUtils();
beanUtilTest.beanTool(beanUtils,User.class);
beanUtilTest.beanTool(beanUtils,People.class);
beanUtilTest.beanTool(beanUtils,Admin.class);
}

/**
*根据bean生成相应的文件
*@parambeanUtils
*@paramc
*@throwsException
*/
@SuppressWarnings("unchecked")
publicvoidbeanTool(BeanUtilsbeanUtils,Classc)throwsException{
beanUtils.init(c);
beanUtils.createBeanDao(c);
beanUtils.createBeanDaoImpl(c);
beanUtils.createBeanService(c);
beanUtils.createBeanServiceImpl(c);
}
}


/AutomaticCodeGeneration/src/vms/beanDao.vm

##createbeandao,thisisainterface
package$!{bean.beanDaoUrl};

importcom.blackants.core.dao.BaseDao;
import$!{bean.beanUrl};

/**
*@author<ahref="mailto:$!{annotation.authorMail}">$!{annotation.authorName}</a>
*@date$!{annotation.date}
*
*@version$!{annotation.version}
*/
publicinterface$!{bean.name}DaoextendsBaseDao<$!{bean.name}>{

}


/AutomaticCodeGeneration/src/vms/beanDaoImpl.vm

##createbeandaoImpl,thisisaclass
package$!{bean.beanDaoImplUrl};

importcom.blackants.core.dao.impl.AbstractBaseDaoImpl;
import$!{bean.beanDaoUrl}.$!{bean.name}Dao;
import$!{bean.beanUrl};

/**
*@author<ahref="mailto:$!{annotation.authorMail}">$!{annotation.authorName}</a>
*@date$!{annotation.date}
*
*@version$!{annotation.version}
*/
publicclass$!{bean.name}DaoImplextendsAbstractBaseDaoImpl<$!{bean.name}>implements$!{bean.name}Dao{

}


/AutomaticCodeGeneration/src/vms/beanService.vm

##createbeanservice,thisisainterface
package$!{bean.beanServiceUrl};

importcom.blackants.core.service.BaseService;
import$!{bean.beanUrl};

/**
*@author<ahref="mailto:$!{annotation.authorMail}">$!{annotation.authorName}</a>
*@date$!{annotation.date}
*
*@version$!{annotation.version}
*/
publicinterface$!{bean.name}ServiceextendsBaseService<$!{bean.name}>{

}


/AutomaticCodeGeneration/src/vms/beanServiceImpl.vm

##createbeanserviceImpl,thisisaclass
package$!{bean.beanServiceImplUrl};

importcom.blackants.core.service.impl.AbstractBaseServiceImpl;
importcom.blackants.core.dao.BaseDao;
import$!{bean.beanDaoUrl}.$!{bean.name}Dao;
import$!{bean.beanServiceUrl}.$!{bean.name}Service;
import$!{bean.beanUrl};

/**
*@author<ahref="mailto:$!{annotation.authorMail}">$!{annotation.authorName}</a>
*@date$!{annotation.date}
*
*@version$!{annotation.version}
*/
publicclass$!{bean.name}ServiceImplextendsAbstractBaseServiceImpl<$!{bean.name}>implements$!{bean.name}Service{

/**
*$!{bean.lowerName}Dao
*/
private$!{bean.name}Dao$!{bean.lowerName}Dao;

@Override
publicBaseDao<$!{bean.name}>getBaseDao(){
return$!{bean.lowerName}Dao;
}

//=================setter=================//

publicvoidsetActivationCodeDao($!{bean.name}Dao$!{bean.lowerName}Dao){
this.$!{bean.lowerName}Dao=$!{bean.lowerName}Dao;
}

}


源码下载http://files.cnblogs.com/hongten/AutomaticCodeGeneration.rar

下载说明:

如果你下载了此压缩包,并且在你的本地导入eclipse,运行程序你会发现系统找不到:

com.blackants.core.dao.BaseDao;(interface)

com.blackants.core.dao.impl.AbstractBaseDaoImpl;(class)

com.blackants.core.service.BaseService;(interface)

com.blackants.core.service.impl.AbstractBaseServiceImpl;(class)
上面所列出的文件,这个不用着急,你可以在项目中新建这些package,然后加入就可以啦


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐