代码自动生成工具_java版
项目结构:
这里要实现的功能是,当我们给出了bean,如:Admin,User,People等实体类后,
我想用代码自动生成我想要的代码,最后生成的效果:
也就是说为每一个bean都生成相应的Dao,DaoImpl,Service,ServiceImpl等类。
后台运行效果:
下面是列出自动生成User的相关文件:
UseDao
、
UserDaoImpl
UserService
UserServiceImpl
=================================================
代码部分:
=================================================
/UUUU_Web_Test/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.text.SimpleDateFormat;
9 import java.util.Date;
10
11
12 /**
13 * @author hongten(hongtenzone@foxmail.com)
14 * @date 2013-2-24
15 */
16 @SuppressWarnings("unchecked")
17 public class BeanUtils {
18
19
20
21 //公共部分
22 private static final String RT_1 = "\r\n";
23 private static final String RT_2 = RT_1+RT_1;
24 private static final String BLANK_1 =" ";
25 private static final String BLANK_4 =" ";
26 private static final String BLANK_8 =BLANK_4 + BLANK_4;
27
28
29
30 //注释部分
31 private static final String ANNOTATION_AUTHOR_PARAMTER = "@author ";
32 private static final String ANNOTATION_AUTHOR_NAME = "hongten(hongtenzone@foxmail.com)";
33 private static final String ANNOTATION_AUTHOR = ANNOTATION_AUTHOR_PARAMTER + ANNOTATION_AUTHOR_NAME;
34 private static final String ANNOTATION_DATE = "@date ";
35 private static final String ANNOTATION = "/**"+RT_1+BLANK_1+"*"+BLANK_1+ANNOTATION_AUTHOR +RT_1+BLANK_1+"*"+BLANK_1+ANNOTATION_DATE +getDate()+RT_1+BLANK_1+"*/"+RT_1;
36
37
38 //文件 地址
39 //private static final String BEAN_PATH = "com/b510/base/bean";
40 private static final String DAO_PATH = "com/b510/base/dao";
41 private static final String DAO_IMPL_PATH = "com/b510/base/dao/impl";
42 private static final String SERVICE_PATH = "com/b510/base/service";
43 private static final String SERVICE_IMPL_PATH = "com/b510/base/service/impl";
44
45
46
47 //包名
48 private static final String BEAN_URL = "com.b510.base.bean";
49 private static final String DAO_URL = "com.b510.base.dao";
50 private static final String DAO_IMPL_URL = "com.b510.base.dao.impl";
51 private static final String SERVICE_URL = "com.b510.base.service";
52 private static final String SERVICE_IMPL_URL = "com.b510.base.service.impl";
53
54 //基本类名称
55 private static final String BASE_DAO_NAME = DAO_URL + ".BaseDao";
56 private static final String ABSTRACT_BASE_DAO_IMPL_NAME = DAO_IMPL_URL + ".AbstractBaseDaoImpl";
57 private static final String BASE_SERVICE_NAME = SERVICE_URL + ".BaseService";
58 private static final String ABSTRACT_BASE_SERVICE_IMPL_NAME = SERVICE_IMPL_URL + ".AbstractBaseServiceImpl";
59
60
61 /**
62 * 创建bean的Dao<br>
63 *
64 * @param c
65 * @throws Exception
66 */
67 public void createBeanDao(Class c) throws Exception {
68 String cName = c.getName();
69 String fileName = System.getProperty("user.dir") + "/src/" + DAO_PATH
70 + "/" + getLastChar(cName) + "Dao.java";
71 File f = new File(fileName);
72 FileWriter fw = new FileWriter(f);
73 fw.write("package "+DAO_URL+";"+RT_2+ANNOTATION+"public interface " +
74 getLastChar(cName) + "Dao extends "+BASE_DAO_NAME+" <" + cName + "> {"+RT_2+"}");
75 fw.flush();
76 fw.close();
77 showInfo(fileName);
78 }
79
80 /**
81 * 创建bean的Dao的实现类
82 * @param c
83 * @throws Exception
84 */
85 public void createBeanDaoImpl(Class c) throws Exception{
86 String cName = c.getName();
87 String fileName = System.getProperty("user.dir") + "/src/" + DAO_IMPL_PATH
88 + "/" + getLastChar(cName) + "DaoImpl.java";
89 File f = new File(fileName);
90 FileWriter fw = new FileWriter(f);
91 fw.write("package "+DAO_IMPL_URL+";"+RT_2+ANNOTATION+"public class " +
92 getLastChar(cName) + "DaoImpl extends "+ABSTRACT_BASE_DAO_IMPL_NAME+"<" +
93 cName + "> implements "+DAO_URL+"."+getLastChar(cName)+"Dao{"+RT_2+"}");
94 fw.flush();
95 fw.close();
96 showInfo(fileName);
97 }
98
99
100
101 /**
102 * 创建bean的service
103 * @param c
104 * @throws Exception
105 */
106 public void createBeanService(Class c) throws Exception{
107 String cName = c.getName();
108 String fileName = System.getProperty("user.dir") + "/src/" + SERVICE_PATH
109 + "/" + getLastChar(cName) + "Service.java";
110 File f = new File(fileName);
111 FileWriter fw = new FileWriter(f);
112 fw.write("package "+SERVICE_URL+";"+RT_2+ANNOTATION+"public interface " +
113 getLastChar(cName) + "Service extends "+BASE_SERVICE_NAME+"<"+ cName +">{"+RT_2+"}");
114 fw.flush();
115 fw.close();
116 showInfo(fileName);
117 }
118
119 /**
120 * 创建bean的service的实现类
121 * @param c
122 * @throws Exception
123 */
124 public void createBeanServiceImpl(Class c) throws Exception{
125 String cName = c.getName();
126 String fileName = System.getProperty("user.dir") + "/src/" + SERVICE_IMPL_PATH
127 + "/" +getLastChar(cName)+"ServiceImpl.java";
128 File f = new File(fileName);
129 FileWriter fw = new FileWriter(f);
130 fw.write("package "+SERVICE_IMPL_URL+";"+RT_2+ANNOTATION+"public class "
131 + getLastChar(cName) + "ServiceImpl extends "+ABSTRACT_BASE_SERVICE_IMPL_NAME+"<"+ cName
132 + "> implements "+SERVICE_URL+"."+getLastChar(cName)+"Service{"+RT_2+BLANK_4
133 +"private "+DAO_URL+"."+getLastChar(cName)+"Dao "+getLowercaseChar(getLastChar(cName))
134 +"Dao;"+RT_2+BLANK_4+"public void set"+getLastChar(cName)+"Dao("+DAO_URL+"."+getLastChar(cName)+"Dao "
135 +getLowercaseChar(getLastChar(cName))+"Dao){"+RT_1+BLANK_8+"this."+getLowercaseChar(getLastChar(cName))+"Dao = "
136 +getLowercaseChar(getLastChar(cName))+"Dao;"+RT_1+BLANK_4+"}"+RT_2+BLANK_4+"@Override"+RT_1+BLANK_4
137 +"public "+DAO_URL+"."+"BaseDao<"+BEAN_URL+"."+getLastChar(cName)+"> getBaseDao(){"+RT_1+BLANK_8
138 +"return "+getLowercaseChar(getLastChar(cName))+"Dao;"+RT_1+BLANK_4+"}"+RT_2+"}");
139 fw.flush();
140 fw.close();
141 showInfo(fileName);
142 }
143
144
145 /**
146 * 获取路径的最后面字符串<br>
147 * 如:<br>
148 * <code>str = "com.b510.base.bean.User"</code><br>
149 * <code> return "User";<code>
150 * @param str
151 * @return
152 */
153 public String getLastChar(String str) {
154 if ((str != null) && (str.length() > 0)) {
155 int dot = str.lastIndexOf('.');
156 if ((dot > -1) && (dot < (str.length() - 1))) {
157 return str.substring(dot + 1);
158 }
159 }
160 return str;
161 }
162
163 /**
164 * 把第一个字母变为小写<br>
165 * 如:<br>
166 * <code>str = "UserDao";</code><br>
167 * <code>return "userDao";</code>
168 * @param str
169 * @return
170 */
171 public String getLowercaseChar(String str){
172 return str.substring(0,1).toLowerCase()+str.substring(1);
173 }
174
175 /**
176 * 显示信息
177 * @param info
178 */
179 public void showInfo(String info){
180 System.out.println("创建文件:"+ info+ "成功!");
181 }
182
183 /**
184 * 获取系统时间
185 * @return
186 */
187 public static String getDate(){
188 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
189 return simpleDateFormat.format(new Date());
190 }
191 }/UUUU_Web_Test/src/com/b510/base/bean/install/BeanUtilTest.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 * @author hongten(hongtenzone@foxmail.com)
12 * @date 2013-2-24
13 */
14 public class BeanUtilTest {
15
16 public static void main(String[] args) throws Exception{
17 BeanUtilTest beanUtilTest = new BeanUtilTest();
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.createBeanDao(c);
33 beanUtils.createBeanDaoImpl(c);
34 beanUtils.createBeanService(c);
35 beanUtils.createBeanServiceImpl(c);
36 }
37 }
源码下载 http://files.cnblogs.com/hongten/UUUU_Web_Test.zip
代码自动生成工具_java版的更多相关文章
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版)
TableGo v6.0.0 版震撼发布,此次版本更新如下: 1.UI界面大改版,组件大调整,提升界面功能的可扩展性. 2.新增BeautyEye主题,界面更加清新美观,也可以通过配置切换到原生Jav ...
- 代码自动生成工具MyGeneration之一(程序员必备工具)
代码自动生成工具MyGeneration之一(程序员必备工具) 转 分类: C#2008-08-06 18:12 16064人阅读 评论(12) 收藏 举报 工具数据库相关数据库stringbrows ...
- Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展
Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个<Asp.net webform scaffoldi ...
- C# 代码自动生成工具
开源:C# 代码自动生成工具,支持站点前后台 前言 写这个项目有很长一段时间了,期间也修修改改,写到最后,自己也没咋用(研究方向变化了). 正文 具体项目开源了:https://github.co ...
- iBatis 代码自动生成工具 iBator 及 Example 使用
iBator的下载和安装 官方下载地址:http://people.apache.org/builds/ibatis/ibator/ 安装:见<Eclipse 插件安装> 安装完成后,“F ...
- 代码自动生成工具MyGeneration之一
前段时间用C#做网站,用到了大量数据库相关的东西.网站采用3层结构,即数据访问层(Data Access Layer),业务逻辑层(Business Logic Layer),页面表现层().做了一段 ...
- mybatis-generator 代码自动生成工具
今天来介绍下怎么用mybatis-gennerator插件自动生成mybatis所需要的dao.bean.mapper xml文件,这样我们可以节省一部分精力,把精力放在业务逻辑上. 之前看过很多文章 ...
- mybatis-generator 代码自动生成工具(maven方式)
由于MyBatis属于一种半自动的ORM框架,所以主要的工作将是书写Mapping映射文件,但是由于手写映射文件很容易出错,mybatis-gennerator插件帮我们自动生成mybatis所需要的 ...
- Py福利,基于uiautomatorviewer 的Python 自动化代码自动生成工具分享(jar已发布GitHub,欢迎Star)
前言做UI自动化无论你用SDK自带的uiautomatorviewer还是Macaca还是Appium自动的inspector,代码最多的就是那些繁琐重复的找元素后点击,输入,长按.....等.现在偷 ...
随机推荐
- 未能加载文件或程序集“Report.Basic”或它的某一个依赖项。试图加载格式不正确的程序
出现问题如下: 解决办法: 这是由于没有开启32位程序兼容模式 具体操作如下:找到对应的程序池--------高级设置-------修改“启用32位应用程序”状态修改为true
- vim中执行shell命令小结
vim中执行shell命令,有以下几种形式 1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如:!ls -l ...
- 在MAC平台下编译Ngnix ,由于MD5算法不能编译通过 解决办法
近期想学习Ngnix 代码,前些日子,对”自己下手狠一次“, 买了MAC 本. 所以想在Mac 上编译,是必须的,不然对不起自己的内心. 不巧遇到了MD5算法编译的问题 src/core/ngx_cr ...
- MVC的小知识点
1.MVC的前台页面编译完之后,也会生成一个前台页面类.在前天页面中加入这段代码this.GetType().Assembly.GetLocation()得到当前类所在的程序集,可以查看其所在的程序, ...
- Web开发从零单排之二:在自制电子请帖中添加留言板功能,SAE+PHP+MySql
在上一篇博客中介绍怎样在SAE平台搭建一个html5的电子请帖网站,收到很多反馈,也有很多人送上婚礼的祝福,十分感谢! web开发从零学起,记录自己学习过程,各种前端大神们可以绕道不要围观啦 大婚将至 ...
- JPA学习---第四节:JPA实例与JPA主键生成策略
1.编写实体类,代码如下: package learn.jpa.bean; import javax.persistence.Entity; import javax.persistence.Gene ...
- iOS 10的23个隐藏新特性-b
上周iOS 10正式版推送后,24小时的更新率已经超过15%,实在惊人.虽然有着初期变砖.5S6卡顿.移动VoLTE无法使用.美版无信号等BUG,但不可忽视的是,iOS 10还是带来了很多从前没有的功 ...
- SpringJUnit4测试--测试无反应/控制台报空指针的解决---junit的jar冲突!
前言: 前些日子碰到一个诡异的问题--用springJUnit进行测试,运行方法什么反应也没有,控制台 也没有输出,百度也没有答案--只好暂时作罢.今天我只好用上了排除法,建个测试小项目,将只要能测试 ...
- VIM Taglist安装配置和使用
问题描述: VIM Taglist安装于配置 问题解决: (1)安装Taglist包 (2)解压taglist压缩包 (3)将 ...
- jquery常用函数与方法汇总
1.delay(duration,[queueName]) 设置一个延时来推迟执行队列中之后的项目. jQuery1.4新增.用于将队列中的函数延时执行.他既可以推迟动画队列的执行,也可以用于自定义队 ...