項目結構:
運行效果:你可能會看到項目中有報錯,不用着急,這個不會影響到你的項目運行。
把其中的User類拿出來,給大家分享一下:
自動生成UserDao.java效果:
自動生成UserDaoImpl.java效果:
自動生成UserService.java效果:
自動生成UserServiceImpl.java效果:
我想大家看到這里,是不是有親自動手試試的興奮感覺....
=======================================================
代碼部分:這個是對“自己寫的一個代碼自動生成工具_java版_源碼下載”的改進
=======================================================
/AutomaticCodeGeneration/src/com/b510/base/bean/User.java
1 /** 2 * 3 */ 4 package com.b510.base.bean; 5 6 /** 7 * @author hongten<br> 8 * @date 2013-3-10 9 */ 10 public class User { 11 12 }
/AutomaticCodeGeneration/src/com/b510/base/bean/install/Annotation.java
1 /** 2 * 3 */ 4 package com.b510.base.bean.install; 5 6 /** 7 * 注釋 8 * @author hongten<br> 9 * @date 2013-3-10 10 */ 11 public class Annotation { 12 13 /** 14 * 作者名稱 15 */ 16 private String authorName; 17 /** 18 * 作者郵箱 19 */ 20 private String authorMail; 21 /** 22 * 日期 23 */ 24 private String date; 25 /** 26 * 版本 27 */ 28 private String version; 29 30 public String getAuthorName() { 31 return authorName; 32 } 33 34 public void setAuthorName(String authorName) { 35 this.authorName = authorName; 36 } 37 38 public String getAuthorMail() { 39 return authorMail; 40 } 41 42 public void setAuthorMail(String authorMail) { 43 this.authorMail = authorMail; 44 } 45 46 public String getDate() { 47 return date; 48 } 49 50 public void setDate(String date) { 51 this.date = date; 52 } 53 54 public String getVersion() { 55 return version; 56 } 57 58 public void setVersion(String version) { 59 this.version = version; 60 } 61 62 63 }
/AutomaticCodeGeneration/src/com/b510/base/bean/install/Bean.java
1 /** 2 * 3 */ 4 package com.b510.base.bean.install; 5 6 /** 7 * bean類 8 * 9 * @author hongten<br> 10 * @date 2013-3-10 11 */ 12 public class Bean { 13 14 /** bean 名稱 */ 15 private String name; 16 /** bean 首字母小寫名稱 */ 17 private String lowerName; 18 /** bean 路徑 */ 19 private String beanUrl; 20 /** dao 路徑 */ 21 private String beanDaoUrl; 22 /** dao 實現路徑 */ 23 private String beanDaoImplUrl; 24 /** service 路徑 */ 25 private String beanServiceUrl; 26 /** service 實現路徑 */ 27 private String beanServiceImplUrl; 28 29 public String getName() { 30 return name; 31 } 32 33 public void setName(String name) { 34 this.name = name; 35 } 36 37 public String getLowerName() { 38 return lowerName; 39 } 40 41 public void setLowerName(String lowerName) { 42 this.lowerName = lowerName; 43 } 44 45 public String getBeanUrl() { 46 return beanUrl; 47 } 48 49 public void setBeanUrl(String beanUrl) { 50 this.beanUrl = beanUrl; 51 } 52 53 public String getBeanDaoUrl() { 54 return beanDaoUrl; 55 } 56 57 public void setBeanDaoUrl(String beanDaoUrl) { 58 this.beanDaoUrl = beanDaoUrl; 59 } 60 61 public String getBeanDaoImplUrl() { 62 return beanDaoImplUrl; 63 } 64 65 public void setBeanDaoImplUrl(String beanDaoImplUrl) { 66 this.beanDaoImplUrl = beanDaoImplUrl; 67 } 68 69 public String getBeanServiceUrl() { 70 return beanServiceUrl; 71 } 72 73 public void setBeanServiceUrl(String beanServiceUrl) { 74 this.beanServiceUrl = beanServiceUrl; 75 } 76 77 public String getBeanServiceImplUrl() { 78 return beanServiceImplUrl; 79 } 80 81 public void setBeanServiceImplUrl(String beanServiceImplUrl) { 82 this.beanServiceImplUrl = beanServiceImplUrl; 83 } 84 85 }
/AutomaticCodeGeneration/src/com/b510/base/bean/install/BeanUtils.java
1 /** 2 * 3 */ 4 package com.b510.base.bean.install; 5 6 import java.io.File; 7 import java.io.FileWriter; 8 import java.io.StringWriter; 9 import java.text.SimpleDateFormat; 10 import java.util.Date; 11 12 import org.apache.velocity.Template; 13 import org.apache.velocity.VelocityContext; 14 import org.apache.velocity.app.VelocityEngine; 15 16 17 /** 18 * @author hongten<br> 19 * @date 2013-3-10 20 */ 21 public class BeanUtils { 22 23 public static final String BEAN_DAO_TEMPLATE_VM_PATH = "src/vms/beanDao.vm"; 24 public static final String BEAN_DAO_IMPL_TEMPLATE_VM_PATH = "src/vms/beanDaoImpl.vm"; 25 public static final String BEAN_SERVICE_TEMPLATE_VM_PATH = "src/vms/beanService.vm"; 26 public static final String BEAN_SERVICE_IMPL_TEMPLATE_VM_PATH = "src/vms/beanServiceImpl.vm"; 27 28 //文件 地址 29 //private static final String BEAN_PATH = "com/b510/base/bean"; 30 private static final String DAO_PATH = "com/b510/base/dao"; 31 private static final String DAO_IMPL_PATH = "com/b510/base/dao/impl"; 32 private static final String SERVICE_PATH = "com/b510/base/service"; 33 private static final String SERVICE_IMPL_PATH = "com/b510/base/service/impl"; 34 35 36 37 //包名 38 private static final String BEAN_URL = "com.b510.base.bean"; 39 private static final String DAO_URL = "com.b510.base.dao"; 40 private static final String DAO_IMPL_URL = "com.b510.base.dao.impl"; 41 private static final String SERVICE_URL = "com.b510.base.service"; 42 private static final String SERVICE_IMPL_URL = "com.b510.base.service.impl"; 43 44 45 private static Bean bean = new Bean(); 46 private static Annotation annotation = new Annotation(); 47 48 /** 49 * 初始化bean和注解 50 * @param c 51 */ 52 public void init(Class c){ 53 if(c != null){ 54 String cName = c.getName(); 55 bean.setName(getLastChar(cName)); 56 bean.setBeanUrl(cName); 57 bean.setLowerName(getLowercaseChar(getLastChar(cName))); 58 59 annotation.setAuthorName("hongten"); 60 annotation.setAuthorMail("hongtenzone@foxmail.com"); 61 SimpleDateFormat simpleDateFormat = new SimpleDateFormat( 62 "yyyy-MM-dd"); 63 annotation.setDate(simpleDateFormat.format(new Date())); 64 annotation.setVersion("1.0"); 65 } 66 } 67 68 /** 69 * 創建bean的Dao<br> 70 * 71 * @param c 72 * @throws Exception 73 */ 74 public void createBeanDao(Class c) throws Exception { 75 String cName = c.getName(); 76 String path = System.getProperty("user.dir") + "/src/" + DAO_PATH 77 + "/"; 78 File filePath = new File(path); 79 createFilePath(filePath); 80 81 String fileName = path + getLastChar(cName) + "Dao.java"; 82 File file = new File(fileName); 83 FileWriter fw = new FileWriter(file); 84 85 bean.setBeanDaoUrl(DAO_URL); 86 87 fw.write(createCode(BEAN_DAO_TEMPLATE_VM_PATH,bean,annotation)); 88 fw.flush(); 89 fw.close(); 90 showInfo(fileName); 91 } 92 93 /** 94 * 創建bean的Dao的實現<br> 95 * 96 * @param c 97 * @throws Exception 98 */ 99 public void createBeanDaoImpl(Class c) throws Exception { 100 String cName = c.getName(); 101 String path = System.getProperty("user.dir") + "/src/" + DAO_IMPL_PATH 102 + "/"; 103 File filePath = new File(path); 104 createFilePath(filePath); 105 106 String fileName = path + getLastChar(cName) + "DaoImpl.java"; 107 File file = new File(fileName); 108 FileWriter fw = new FileWriter(file); 109 110 bean.setBeanDaoUrl(DAO_URL); 111 bean.setBeanDaoImplUrl(DAO_IMPL_URL); 112 113 fw.write(createCode(BEAN_DAO_IMPL_TEMPLATE_VM_PATH,bean,annotation)); 114 fw.flush(); 115 fw.close(); 116 showInfo(fileName); 117 } 118 119 120 /** 121 * 創建bean的Service<br> 122 * 123 * @param c 124 * @throws Exception 125 */ 126 public void createBeanService(Class c) throws Exception { 127 String cName = c.getName(); 128 String path = System.getProperty("user.dir") + "/src/" + SERVICE_PATH 129 + "/"; 130 File filePath = new File(path); 131 createFilePath(filePath); 132 133 String fileName = path + getLastChar(cName) + "Service.java"; 134 File file = new File(fileName); 135 FileWriter fw = new FileWriter(file); 136 137 bean.setBeanServiceUrl(SERVICE_URL); 138 139 fw.write(createCode(BEAN_SERVICE_TEMPLATE_VM_PATH,bean,annotation)); 140 fw.flush(); 141 fw.close(); 142 showInfo(fileName); 143 } 144 145 /** 146 * 創建bean的Service的實現<br> 147 * 148 * @param c 149 * @throws Exception 150 */ 151 public void createBeanServiceImpl(Class c) throws Exception { 152 String cName = c.getName(); 153 String path = System.getProperty("user.dir") + "/src/" + SERVICE_IMPL_PATH 154 + "/"; 155 File filePath = new File(path); 156 createFilePath(filePath); 157 158 String fileName = path + getLastChar(cName) + "ServiceImpl.java"; 159 File file = new File(fileName); 160 FileWriter fw = new FileWriter(file); 161 162 bean.setBeanDaoUrl(DAO_URL); 163 bean.setBeanServiceUrl(SERVICE_URL); 164 bean.setBeanServiceImplUrl(SERVICE_IMPL_URL); 165 166 fw.write(createCode(BEAN_SERVICE_IMPL_TEMPLATE_VM_PATH,bean,annotation)); 167 fw.flush(); 168 fw.close(); 169 showInfo(fileName); 170 } 171 172 173 174 175 176 177 178 179 180 181 182 /** 183 * 根據模板生成代碼 184 * @param fileVMPath 模板路徑 185 * @param bean 目標bean 186 * @param annotation 注釋 187 * @return 188 * @throws Exception 189 */ 190 public String createCode(String fileVMPath,Bean bean,Annotation annotation) throws Exception{ 191 VelocityEngine velocityEngine = new VelocityEngine(); 192 velocityEngine.setProperty("input.encoding", "UTF-8"); 193 velocityEngine.setProperty("output.encoding", "UTF-8"); 194 velocityEngine.init(); 195 Template template = velocityEngine.getTemplate(fileVMPath); 196 VelocityContext velocityContext = new VelocityContext(); 197 velocityContext.put("bean", bean); 198 velocityContext.put("annotation", annotation); 199 StringWriter stringWriter = new StringWriter(); 200 template.merge(velocityContext, stringWriter); 201 return stringWriter.toString(); 202 } 203 204 /** 205 * 創建文件 206 * @param file 207 */ 208 public void createFilePath(File file){ 209 if(!file.exists()){ 210 System.out.println("創建["+file.getAbsolutePath()+"]情況:"+file.mkdirs()); 211 }else{ 212 System.out.println("存在目錄:"+file.getAbsolutePath()); 213 } 214 } 215 216 217 218 219 /** 220 * 獲取路徑的最后面字符串<br> 221 * 如:<br> 222 * <code>str = "com.b510.base.bean.User"</code><br> 223 * <code> return "User";<code> 224 * @param str 225 * @return 226 */ 227 public String getLastChar(String str) { 228 if ((str != null) && (str.length() > 0)) { 229 int dot = str.lastIndexOf('.'); 230 if ((dot > -1) && (dot < (str.length() - 1))) { 231 return str.substring(dot + 1); 232 } 233 } 234 return str; 235 } 236 237 /** 238 * 把第一個字母變為小寫<br> 239 * 如:<br> 240 * <code>str = "UserDao";</code><br> 241 * <code>return "userDao";</code> 242 * @param str 243 * @return 244 */ 245 public String getLowercaseChar(String str){ 246 return str.substring(0,1).toLowerCase()+str.substring(1); 247 } 248 249 /** 250 * 顯示信息 251 * @param info 252 */ 253 public void showInfo(String info){ 254 System.out.println("創建文件:"+ info+ "成功!"); 255 } 256 257 /** 258 * 獲取系統時間 259 * @return 260 */ 261 public static String getDate(){ 262 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 263 return simpleDateFormat.format(new Date()); 264 } 265 }
/AutomaticCodeGeneration/src/com/b510/base/bean/install/BeanUtilsTest.java
1 /** 2 * 3 */ 4 package com.b510.base.bean.install; 5 6 import com.b510.base.bean.Admin; 7 import com.b510.base.bean.People; 8 import com.b510.base.bean.User; 9 10 11 /** 12 * @author hongten<br> 13 * @date 2013-3-10 14 */ 15 public class BeanUtilsTest{ 16 public static void main(String[] args) throws Exception{ 17 BeanUtilsTest beanUtilTest = new BeanUtilsTest(); 18 BeanUtils beanUtils = new BeanUtils(); 19 beanUtilTest.beanTool(beanUtils, User.class); 20 beanUtilTest.beanTool(beanUtils, People.class); 21 beanUtilTest.beanTool(beanUtils, Admin.class); 22 } 23 24 /** 25 * 根據bean生成相應的文件 26 * @param beanUtils 27 * @param c 28 * @throws Exception 29 */ 30 @SuppressWarnings("unchecked") 31 public void beanTool(BeanUtils beanUtils ,Class c)throws Exception{ 32 beanUtils.init(c); 33 beanUtils.createBeanDao(c); 34 beanUtils.createBeanDaoImpl(c); 35 beanUtils.createBeanService(c); 36 beanUtils.createBeanServiceImpl(c); 37 } 38 }
/AutomaticCodeGeneration/src/vms/beanDao.vm
1 ##create bean dao,this is a interface 2 package $!{bean.beanDaoUrl}; 3 4 import com.blackants.core.dao.BaseDao; 5 import $!{bean.beanUrl}; 6 7 /** 8 * @author <a href="mailto:$!{annotation.authorMail}">$!{annotation.authorName}</a> 9 * @date $!{annotation.date} 10 * 11 * @version $!{annotation.version} 12 */ 13 public interface $!{bean.name}Dao extends BaseDao<$!{bean.name}> { 14 15 }
/AutomaticCodeGeneration/src/vms/beanDaoImpl.vm
1 ##create bean daoImpl,this is a class 2 package $!{bean.beanDaoImplUrl}; 3 4 import com.blackants.core.dao.impl.AbstractBaseDaoImpl; 5 import $!{bean.beanDaoUrl}.$!{bean.name}Dao; 6 import $!{bean.beanUrl}; 7 8 /** 9 * @author <a href="mailto:$!{annotation.authorMail}">$!{annotation.authorName}</a> 10 * @date $!{annotation.date} 11 * 12 * @version $!{annotation.version} 13 */ 14 public class $!{bean.name}DaoImpl extends AbstractBaseDaoImpl<$!{bean.name}> implements $!{bean.name}Dao{ 15 16 }
/AutomaticCodeGeneration/src/vms/beanService.vm
1 ##create bean service,this is a interface 2 package $!{bean.beanServiceUrl}; 3 4 import com.blackants.core.service.BaseService; 5 import $!{bean.beanUrl}; 6 7 /** 8 * @author <a href="mailto:$!{annotation.authorMail}">$!{annotation.authorName}</a> 9 * @date $!{annotation.date} 10 * 11 * @version $!{annotation.version} 12 */ 13 public interface $!{bean.name}Service extends BaseService<$!{bean.name}> { 14 15 }
/AutomaticCodeGeneration/src/vms/beanServiceImpl.vm
1 ##create bean serviceImpl,this is a class 2 package $!{bean.beanServiceImplUrl}; 3 4 import com.blackants.core.service.impl.AbstractBaseServiceImpl; 5 import com.blackants.core.dao.BaseDao; 6 import $!{bean.beanDaoUrl}.$!{bean.name}Dao; 7 import $!{bean.beanServiceUrl}.$!{bean.name}Service; 8 import $!{bean.beanUrl}; 9 10 /** 11 * @author <a href="mailto:$!{annotation.authorMail}">$!{annotation.authorName}</a> 12 * @date $!{annotation.date} 13 * 14 * @version $!{annotation.version} 15 */ 16 public class $!{bean.name}ServiceImpl extends AbstractBaseServiceImpl<$!{bean.name}> implements $!{bean.name}Service{ 17 18 /** 19 * $!{bean.lowerName} Dao 20 */ 21 private $!{bean.name}Dao $!{bean.lowerName}Dao; 22 23 @Override 24 public BaseDao<$!{bean.name}> getBaseDao() { 25 return $!{bean.lowerName}Dao; 26 } 27 28 // =================setter================= // 29 30 public void setActivationCodeDao($!{bean.name}Dao $!{bean.lowerName}Dao) { 31 this.$!{bean.lowerName}Dao = $!{bean.lowerName}Dao; 32 } 33 34 }
源碼下載: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,然后加入就可以啦