项目结构:
运行效果:你可能会看到项目中有报错,不用着急,这个不会影响到你的项目运行。
把其中的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,然后加入就可以啦