zoukankan      html  css  js  c++  java
  • 通过反射生成类的utils

    package com.gu.utils;
    
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Writer;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import som.gu.core.DBManager;
    import som.gu.core.MysqlTypeConvertor;
    import som.gu.core.tableContext;
    import som.gu.core.typeConvetor;
    
    import com.gu.bean.JavaFieldGetSet;
    import com.gu.bean.columnInfo;
    import com.gu.bean.tableInfo;
    
    /**
     * 生成类源码常用的操作
     * @author 谷
     *
     */
    public class javaFieldUtils {
    
        /**
         * 生成类某属性和get,set方法
         * @param column
         * @param converter
         * @return
         */
        public static JavaFieldGetSet createjavaFieldSetGetSRC(columnInfo column,typeConvetor converter){
            JavaFieldGetSet jfgs=new JavaFieldGetSet();
            String javaFieldType=converter.databassType2javatype(column.getDateType());
            jfgs.setFieldInfo("	private "+javaFieldType+" "+column.getName()+";
    ");
            //get方法
            StringBuilder str=new StringBuilder();
            str.append("	public "+javaFieldType+" Get"+StringUtils.firstChar2uppercase(column.getName())+"(){
    ");
            str.append("		return "+column.getName()+";
    	}
    ");
            jfgs.setGetInfo(str.toString());
            //set方法
            StringBuilder set=new StringBuilder();
            set.append("	public "+" void Set"+StringUtils.firstChar2uppercase(column.getName())+"("+javaFieldType+" "+column.getName()+"){
    ");
            set.append("		this."+column.getName()+"="+column.getName()+";
    	}
    ");
            jfgs.setSetInfo(set.toString());
            
            return jfgs;
        }
        /**
         * 生成某个类中所有信息
         * @param table
         * @param conver
         * @return
         */
        public static String JavaSrc(tableInfo table,typeConvetor conver){
            StringBuilder src=new StringBuilder();
             Map<String, columnInfo> columns=table.getColumns();
             List<JavaFieldGetSet>list=new ArrayList<>();//所有属性列表
             
             
             for(columnInfo column:columns.values()){
                 list.add(createjavaFieldSetGetSRC(column, conver));
             }
             //生成包名;
             src.append("package "+DBManager.getPoPackage()+";
    ");
             //生成类名
             src.append("public class "+StringUtils.firstChar2uppercase(table.gettName())+" {
    ");
             //生成属性
             for(JavaFieldGetSet f:list){
                 src.append(f.getFieldInfo());
             }
             src.append("
    
    ");
             //生成get,set方法
             for(JavaFieldGetSet f:list){
                 src.append(f.getGetInfo());
             }
             for(JavaFieldGetSet f:list){
                 src.append(f.getSetInfo());
             }
             src.append("}");
             return src.toString();
        }
        /**
         * 生成表对应的java文件
         * @param table
         * @param conver
         */
        public static void creatJavaPoFile(tableInfo table,typeConvetor conver){
            String po=JavaSrc(table,conver);
            String srcPath=DBManager.getSrcPath().replaceAll("\\", "/");;
            String PoPackagePath=DBManager.getPoPackage().replaceAll("\.","/");
            //String filePath=srcPath+"/"+PoPackagePath+"/"+table.gettName()+".java";
            
            File f=new File(srcPath+"/"+PoPackagePath);
            
            if(!f.exists()){
                f.mkdirs();
            }
        //    System.out.print(f.getAbsolutePath());
            BufferedWriter writer=null;
            try {
             writer=new BufferedWriter(new FileWriter(f.getAbsolutePath()+"/"+StringUtils.firstChar2uppercase(table.gettName())+".java"));
             writer.write(po);
             writer.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        } 
            }
    
    }
  • 相关阅读:
    STM32F030 启用内部晶振并配置系统时钟为48M
    CSS 动画过程及间接实现样式延时
    Post请求的两种编码格式:application/x-www-form-urlencoded和multipart/form-data
    21 GetHashCode Equels ReferenceEquals的比较
    3 Base64编码主要应用在那些场合?
    2 什么是编码?什么是Unicode?
    2 名企面试_02
    ListView
    Image
    Container
  • 原文地址:https://www.cnblogs.com/helloMyworld0001/p/5972939.html
Copyright © 2011-2022 走看看