利用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
/AutomaticCodeGeneration/src/com/b510/base/bean/install/Annotation.java
/AutomaticCodeGeneration/src/com/b510/base/bean/install/Bean.java
/AutomaticCodeGeneration/src/com/b510/base/bean/install/BeanUtils.java
/AutomaticCodeGeneration/src/com/b510/base/bean/install/BeanUtilsTest.java
/AutomaticCodeGeneration/src/vms/beanDao.vm
/AutomaticCodeGeneration/src/vms/beanDaoImpl.vm
/AutomaticCodeGeneration/src/vms/beanService.vm
/AutomaticCodeGeneration/src/vms/beanServiceImpl.vm
源码下载:http://files.cnblogs.com/hongten/AutomaticCodeGeneration.rar
下载说明:
如果你下载了此压缩包,并且在你的本地导入eclipse,运行程序你会发现系统找不到:
运行效果:你可能会看到项目中有报错,不用着急,这个不会影响到你的项目运行。
把其中的User类拿出来,给大家分享一下:
自动生成UserDao.java效果:
[b]自动生成UserDaoImpl.java[/b]效果:
[b]自动生成UserService.java[/b]效果:
[b]自动生成UserServiceImpl.java[/b]效果:
我想大家看到这里,是不是有亲自动手试试的兴奋感觉....
=======================================================
代码部分:这个是对“
=======================================================
/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; } }
源码下载:
下载说明:
如果你下载了此压缩包,并且在你的本地导入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,然后加入就可以啦
相关文章推荐
- 利用Velocity自动生成自定义代码_java版_源码下载
- 自己写的一个代码自动生成工具_java版_源码下载
- 在Eclipse里利用javah把java代码声明的JNI方法自动生成成C\C++头文件
- 利用java代码自动下载嗨学网的学习视频
- 【mybatis源码学习】利用maven插件自动生成mybatis代码
- AutoCode (vs插件)自动生成代码插件 下载及使用教程(C#版)( 更新简单自定义模板教程)
- UML工具推荐 Poseidon版本 可以免费下载,自动生成代码 C++ Java C# VB.NET等 (来自德国汉堡的国际性建模软件开发商Gentleware AG的)
- java 二维码生成与解析代码实现,程序源码下载可用
- ssm 自定义注解实现mybatis自动维护表结构以及利用freemarker生成代码
- AutoCode (vs插件)自动生成代码插件 下载及使用教程(C#版)( 更新简单自定义模板教程)
- Android 利用annotationProcessor生成Java代码
- 利用mybatis-generator自动生成代码
- Android 导入android源码有错,R.java文件不能自动生成解决方法
- 利用在线工具根据JSon数据自动生成对应的Java实体类
- JAVA入门[7]-Mybatis generator(MBG)自动生成mybatis代码
- 利用java代码生成二维码
- 利用mybatis-generator自动生成数据持久化的代码
- 个人总结/Binder+AIDL自动生成Java文件中的代码分析
- 配置axis2环境变量,wsdl2ava命令自动生成JAVA代码,学会查看wsdl文档
- 【java项目实践】在eclipse中使用利用mybatis-generator自动生成Model、Dao、mapping代码