自己写的一个代码自动生成工具_java版_源码下载
2013-02-24 17:22
1026 查看
项目结构:
这里要实现的功能是,当我们给出了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
/UUUU_Web_Test/src/com/b510/base/bean/install/BeanUtilTest.java
源码下载:http://files.cnblogs.com/hongten/UUUU_Web_Test.zip
这里要实现的功能是,当我们给出了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
/** * */ package com.b510.base.bean.install; import java.io.File; import java.io.FileWriter; import java.text.SimpleDateFormat; import java.util.Date; /** * @author hongten(hongtenzone@foxmail.com) * @date 2013-2-24 */ @SuppressWarnings("unchecked") public class BeanUtils { //公共部分 private static final String RT_1 = "\r\n"; private static final String RT_2 = RT_1+RT_1; private static final String BLANK_1 =" "; private static final String BLANK_4 =" "; private static final String BLANK_8 =BLANK_4 + BLANK_4; //注释部分 private static final String ANNOTATION_AUTHOR_PARAMTER = "@author "; private static final String ANNOTATION_AUTHOR_NAME = "hongten(hongtenzone@foxmail.com)"; private static final String ANNOTATION_AUTHOR = ANNOTATION_AUTHOR_PARAMTER + ANNOTATION_AUTHOR_NAME; private static final String ANNOTATION_DATE = "@date "; 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; //文件 地址 //private static final String BEAN_PATH = "com/b510/base/bean"; private static final String DAO_PATH = "com/b510/base/dao"; private static final String DAO_IMPL_PATH = "com/b510/base/dao/impl"; private static final String SERVICE_PATH = "com/b510/base/service"; private static final String SERVICE_IMPL_PATH = "com/b510/base/service/impl"; //包名 private static final String BEAN_URL = "com.b510.base.bean"; private static final String DAO_URL = "com.b510.base.dao"; private static final String DAO_IMPL_URL = "com.b510.base.dao.impl"; private static final String SERVICE_URL = "com.b510.base.service"; private static final String SERVICE_IMPL_URL = "com.b510.base.service.impl"; //基本类名称 private static final String BASE_DAO_NAME = DAO_URL + ".BaseDao"; private static final String ABSTRACT_BASE_DAO_IMPL_NAME = DAO_IMPL_URL + ".AbstractBaseDaoImpl"; private static final String BASE_SERVICE_NAME = SERVICE_URL + ".BaseService"; private static final String ABSTRACT_BASE_SERVICE_IMPL_NAME = SERVICE_IMPL_URL + ".AbstractBaseServiceImpl"; /** * 创建bean的Dao<br> * * @param c * @throws Exception */ public void createBeanDao(Class c) throws Exception { String cName = c.getName(); String fileName = System.getProperty("user.dir") + "/src/" + DAO_PATH + "/" + getLastChar(cName) + "Dao.java"; File f = new File(fileName); FileWriter fw = new FileWriter(f); fw.write("package "+DAO_URL+";"+RT_2+ANNOTATION+"public interface " + getLastChar(cName) + "Dao extends "+BASE_DAO_NAME+" <" + cName + "> {"+RT_2+"}"); fw.flush(); fw.close(); showInfo(fileName); } /** * 创建bean的Dao的实现类 * @param c * @throws Exception */ public void createBeanDaoImpl(Class c) throws Exception{ String cName = c.getName(); String fileName = System.getProperty("user.dir") + "/src/" + DAO_IMPL_PATH + "/" + getLastChar(cName) + "DaoImpl.java"; File f = new File(fileName); FileWriter fw = new FileWriter(f); fw.write("package "+DAO_IMPL_URL+";"+RT_2+ANNOTATION+"public class " + getLastChar(cName) + "DaoImpl extends "+ABSTRACT_BASE_DAO_IMPL_NAME+"<" + cName + "> implements "+DAO_URL+"."+getLastChar(cName)+"Dao{"+RT_2+"}"); fw.flush(); fw.close(); showInfo(fileName); } /** * 创建bean的service * @param c * @throws Exception */ public void createBeanService(Class c) throws Exception{ String cName = c.getName(); String fileName = System.getProperty("user.dir") + "/src/" + SERVICE_PATH + "/" + getLastChar(cName) + "Service.java"; File f = new File(fileName); FileWriter fw = new FileWriter(f); fw.write("package "+SERVICE_URL+";"+RT_2+ANNOTATION+"public interface " + getLastChar(cName) + "Service extends "+BASE_SERVICE_NAME+"<"+ cName +">{"+RT_2+"}"); fw.flush(); fw.close(); showInfo(fileName); } /** * 创建bean的service的实现类 * @param c * @throws Exception */ public void createBeanServiceImpl(Class c) throws Exception{ String cName = c.getName(); String fileName = System.getProperty("user.dir") + "/src/" + SERVICE_IMPL_PATH + "/" +getLastChar(cName)+"ServiceImpl.java"; File f = new File(fileName); FileWriter fw = new FileWriter(f); fw.write("package "+SERVICE_IMPL_URL+";"+RT_2+ANNOTATION+"public class " + getLastChar(cName) + "ServiceImpl extends "+ABSTRACT_BASE_SERVICE_IMPL_NAME+"<"+ cName + "> implements "+SERVICE_URL+"."+getLastChar(cName)+"Service{"+RT_2+BLANK_4 +"private "+DAO_URL+"."+getLastChar(cName)+"Dao "+getLowercaseChar(getLastChar(cName)) +"Dao;"+RT_2+BLANK_4+"public void set"+getLastChar(cName)+"Dao("+DAO_URL+"."+getLastChar(cName)+"Dao " +getLowercaseChar(getLastChar(cName))+"Dao){"+RT_1+BLANK_8+"this."+getLowercaseChar(getLastChar(cName))+"Dao = " +getLowercaseChar(getLastChar(cName))+"Dao;"+RT_1+BLANK_4+"}"+RT_2+BLANK_4+"@Override"+RT_1+BLANK_4 +"public "+DAO_URL+"."+"BaseDao<"+BEAN_URL+"."+getLastChar(cName)+"> getBaseDao(){"+RT_1+BLANK_8 +"return "+getLowercaseChar(getLastChar(cName))+"Dao;"+RT_1+BLANK_4+"}"+RT_2+"}"); fw.flush(); fw.close(); showInfo(fileName); } /** * 获取路径的最后面字符串<br> * 如:<br> * <code>str = "com.b510.base.bean.User"</code><br> * <code> return "User";<code> * @param str * @return */ public String getLastChar(String str) { if ((str != null) && (str.length() > 0)) { int dot = str.lastIndexOf('.'); if ((dot > -1) && (dot < (str.length() - 1))) { return str.substring(dot + 1); } } return str; } /** * 把第一个字母变为小写<br> * 如:<br> * <code>str = "UserDao";</code><br> * <code>return "userDao";</code> * @param str * @return */ public String getLowercaseChar(String str){ return str.substring(0,1).toLowerCase()+str.substring(1); } /** * 显示信息 * @param info */ public void showInfo(String info){ System.out.println("创建文件:"+ info+ "成功!"); } /** * 获取系统时间 * @return */ public static String getDate(){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); return simpleDateFormat.format(new Date()); } }
/UUUU_Web_Test/src/com/b510/base/bean/install/BeanUtilTest.java
/** * */ package com.b510.base.bean.install; import com.b510.base.bean.Admin; import com.b510.base.bean.People; import com.b510.base.bean.User; /** * @author hongten(hongtenzone@foxmail.com) * @date 2013-2-24 */ public class BeanUtilTest { public static void main(String[] args) throws Exception{ BeanUtilTest beanUtilTest = new BeanUtilTest(); BeanUtils beanUtils = new BeanUtils(); beanUtilTest.beanTool(beanUtils, User.class); beanUtilTest.beanTool(beanUtils, People.class); beanUtilTest.beanTool(beanUtils, Admin.class); } /** * 根据bean生成相应的文件 * @param beanUtils * @param c * @throws Exception */ @SuppressWarnings("unchecked") public void beanTool(BeanUtils beanUtils ,Class c)throws Exception{ beanUtils.createBeanDao(c); beanUtils.createBeanDaoImpl(c); beanUtils.createBeanService(c); beanUtils.createBeanServiceImpl(c); } }
源码下载:http://files.cnblogs.com/hongten/UUUU_Web_Test.zip
相关文章推荐
- UML工具推荐 Poseidon版本 可以免费下载,自动生成代码 C++ Java C# VB.NET等 (来自德国汉堡的国际性建模软件开发商Gentleware AG的)
- 利用Velocity自动生成自定义代码_java版_源码下载
- 利用Velocity自动生成自定义代码_java版_源码下载
- 一个自己用的代码备份工具,支持delphi,android,java,可以自己添加配置,灵活支持大部分编程语言
- 简单好用的Nhibernate代码自动生成工具,自己写的基于动软代码生成器Nhibernate代码自动生成模板及图文教程
- [C#]一步一步开发自己的自动代码生成工具之五:DAL层模板
- mybatis-generator-gui--一个mybatis代码自动生成界面工具
- 分享一个面向EntityFramework的代码生成工具(源码)
- [C#]一步一步开发自己的自动代码生成工具之六:业务层模板
- java 二维码生成与解析代码实现,程序源码下载可用
- 自动生成代码工具【JAVA版】
- 分享一个自己开发的数据字典与动态代码生成工具
- 一个来将返回的 JSON 数据自动生成 Java 对象的工具
- JAVA 自动生成对应数据库表的JPA代码工具
- 用groovy简化java反射编写一个基于行数据对象的自动生成excel文件对象的工具
- 分享一个面向EntityFramework的代码生成工具(源码)
- 分享一个面向EntityFramework的代码生成工具(源码)
- jnaerator:java调用动态库的神器,JNA代码自动生成工具
- 代码在线自动生成工具,在线生成java代码,springmvc框架,mapper,实体类,控制器,页面代码
- 一个自己写的用来搜索各种文件格式生成txt清单的java工具