文档章节

自动代码生成

lyg945
 lyg945
发布于 2014/11/13 23:26
字数 575
阅读 65
收藏 0

/**


 * 


 */


package com.liuyonggang.component.utils;




import java.io.File;


import java.io.FileWriter;


import java.text.SimpleDateFormat;


import java.util.Date;








/**


 * @author liuyonggang


 * @date 2014-11-12


 */


@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 = "liuyonggang";


 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 DAO_PATH = "com/liuyonggang/component/repository/gps";


 private static final String SERVICE_PATH = "com/liuyonggang/component/sevice/gps";




 


 //包名


 private static final String DAO_URL = "com.liuyonggang.component.repository.gps";


 private static final String SERVICE_URL = "com.liuyonggang.component.sevice.gps";


 


 /**


  * 创建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/main/java/" + DAO_PATH+ "/" + getLastChar(cName) + "Repository.java";


 


 File f = new File(fileName);


 FileWriter fw = new FileWriter(f);


 


 fw.write("package "+DAO_URL+";"+RT_2+


 


  "import com.liuyonggang.component.core.DefaultEntityRepository;"+RT_2+


  "import "+cName+";"+RT_2


  


  +ANNOTATION+


  "public interface " + getLastChar(cName) + "Repository extends DefaultEntityRepository <" + c.getSimpleName() + ",Integer> {"+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/main/java/" + SERVICE_PATH+ "/" + getLastChar(cName) + "Service.java";


 


 File f = new File(fileName);


 FileWriter fw = new FileWriter(f);


 


 fw.write("package "+SERVICE_URL+";"+RT_2+


 


  "import javax.annotation.Resource;"+RT_1+


  "import javax.transaction.Transactional;"+RT_2+


  


  "import org.springframework.stereotype.Service;"+RT_2+


  


  "import com.liuyonggang.component.core.DefaultEntityRepository;"+RT_1+


  "import com.liuyonggang.component.core.DefaultEntityService;"+RT_1+


  "import "+cName+";"+RT_1+


  "import "+DAO_URL+"."+c.getSimpleName()+"Repository;"+RT_2


  


  +ANNOTATION+


  "@Service"+RT_1+


  "@Transactional"+RT_1+


  "public class " + getLastChar(cName) + "Service extends DefaultEntityService <" + c.getSimpleName() + ",Integer> {"+RT_2+


  


   BLANK_8+"@Resource"+RT_1+


 BLANK_8+c.getSimpleName()+"Repository "+getLowercaseChar(c.getSimpleName()+"Repository; ")+RT_2+


 


 BLANK_8+"@Override"+RT_1+


 BLANK_8+"protected DefaultEntityRepository<"+c.getSimpleName()+", Integer> getDao() {"+RT_1+


 BLANK_8+BLANK_4+"return "+getLowercaseChar(c.getSimpleName()+"Repository; ")+RT_1+


 BLANK_8+"}"+RT_1+


 


  "}");


 


 


 fw.flush();


 fw.close();


 showInfo(fileName);


    }




    




 /**


  * 获取路径的最后面字符串<br>


  * 如:<br>


  *     <code>str = "com.liuyonggang.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());


 }


 


}








/**


 * 


 */


package com.liuyonggang.component.utils;







/**


 * @author liuyonggang


 * @date 2014-11-12


 */




public class BeanUtilTest {




 public static void main(String[] args) throws Exception{


 BeanUtilTest beanUtilTest = new BeanUtilTest();


 BeanUtils beanUtils = new BeanUtils();


 Object [] array =new Object[]{


 User.class,


 Admin.class


 };


 


 for (int i = 0; i < array.length; i++) {


 beanUtilTest.beanTool(beanUtils, (Class) array[i]);


 }


 


 


 }


 


 /**


  * 根据bean生成相应的文件


  * @param beanUtils


  * @param c


  * @throws Exception


  */


 @SuppressWarnings("unchecked")


 public void beanTool(BeanUtils beanUtils ,Class c)throws Exception{


 beanUtils.createBeanDao(c);


 beanUtils.createBeanService(c);


 }


}


© 著作权归作者所有

上一篇: 源码安装nginx
下一篇: Linux安装配置php
lyg945

lyg945

粉丝 39
博文 28
码字总数 15849
作品 0
上海
后端工程师
私信 提问
加载中

评论(0)

C结构体工具DirectStruct(综合示例一)

C结构体工具DirectStruct(综合示例一) 1.编写定义文件,用工具dsc处理之,自动生成XML转换代码和ESQL代码片段 2.编写客户端代码 3.编写服务端代码 4.编译运行 --------------------------...

calvinwilliams
2014/10/08
366
0
bboss v4.10.1 发布,自动代码生成工具

bboss 自动代码生成工具 v4.10.1 发布 bboss 自动代码生成工具是一款针对bboss框架的快速代码生成工具,v4.10.1新增功能及功能改进: 修复了一系列bug 新增调整ui界面字段展现顺序功能,通过...

bboss
2015/11/20
2.5K
2
人工智能自动代码生成1---前言

代码自动生成技术的历史非常长,人们采用过各种代码自动生成系统,取得了程度不同的成功。例如各种IDE中的Wizard,可以视为被动式代码生成的成功例子,目前还在各种IDE中广泛存在。在诸如PHP...

yt7589
2017/03/08
0
0
敢不敢更懒,自己编写的mysql C++自动代码生成工具

我一直有一个梦想,就是那天能够让计算机去帮我编写代码,而我只需要将我自己的规划告诉它,就可以自动生成我需要的代码。 梦想永远是梦想,一定要自己一步步的去实现,否则和咸鱼有什么区别...

自由的眼
2016/12/13
125
0
代码生成平台 - Xxl-Code-Generator

代码生成平台Xxl-Code-Generator Xxl-Code-Generator 是一个 "controller/service/dao/mybatis/model" 多层的代码生成平台。只需要提供SQL,将会自动生成全部代码。 特性 1、简洁:界面操作,...

许雪里
2018/05/04
2.1K
5

没有更多内容

加载失败,请刷新页面

加载更多

如何用Python增强Excel,减少处理复杂数据的痛苦?

Excel既是一种祝福,也是一种诅咒。 当涉及到足够小的数据和足够简单的操作时,Excel是王道。然而,一旦发现自己在努力走出这些区域,它就会变成一种痛苦。 当然,可以使用ExcelVBA来解决这些...

Python圈子
刚刚
0
0
Apache配置虚拟目录+Zend Studio访问

1 概述 Apache配置虚拟目录,然后可以通过Zend Studio的工程去访问,只需要修改Apache的httpd.conf文件. 2 修改httpd.conf 找到Apache安装目录下的httpd.conf,在末尾加上: <IfModule dir_modul...

氷泠
2分钟前
7
0
Android知识体系总结2020之Android部分控件篇

初级 1.基础布局 线性布局(LinearLayout) 相对布局(RelativeLayout) 约束布局(ConstraintLayout) 网格布局(GridLayout) 表格布局(TableLayout) 帧布局(FrameLayout) 绝对布局(AbsoluteLayout...

ClAndEllen
3分钟前
7
0
为什么要分库分表?

随着近些年信息化大跃进,各行各业无纸化办公产生了大量的数据,而越来越多的数据存入了数据库中。当使用MySQL数据库的时候,单表超出了2000万数据量就会出现性能上的分水岭。 并且物理服务器...

php开源社区
5分钟前
0
0
关于STM32的裸机多任务多线程心得

多任务多线程 多任务"并行处理" 首先我们来理解一下并行处理,初学者写程序通常是顺序执行,当我们逐渐想成为“专业”人士的时候顺序执行 的程序已经不能满足我们了,所以就需要多任务多线程...

shzwork
6分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部