データベーステーブルからjavaクラス変換ツール

8708 ワード

//        :            ,         java   
package com.iamzken.utils;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;

public class DB2JavaConvertor {
	private Connection connection;
	private PreparedStatement UserQuery;
	/*mysql url      */
	private static String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useOldAliasMetadataBehavior=true";
	//  
	private static String user = "root";
	//  
	private static String password = "";
	private Vector<String> vector = new Vector<String>();
	//mysql jdbc java      
	private String driverClassName = "com.mysql.jdbc.Driver";
	//       
	String table = "teacher";
	//       
	private String[] colnames; //     
	//        
	private String[] colTypes;
	public DB2JavaConvertor(){
		try {//    
			Class.forName(driverClassName);
			if (connection == null || connection.isClosed())
				//    
				connection = DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException ex) {
				ex.printStackTrace();
				System.out.println("Oh,not");
			} catch (SQLException e) {
				e.printStackTrace();
				System.out.println("Oh,not");
			}
	}
	
	public Connection getConnection() {
		return connection;
	}
	public void setConnection(Connection connection) {
		this.connection = connection;
	}

	public void doAction(){
		String sql = "select * from "+table;
		try {
			PreparedStatement statement = connection.prepareStatement(sql);
			//          
			ResultSetMetaData metadata = statement.getMetaData();
			//        
			int len = metadata.getColumnCount();
			//    
			colnames = new String[len+1];
			//     --->     java      
			colTypes = new String[len+1];
			for(int i= 1;i<=len;i++){
				//System.out.println(metadata.getColumnName(i)+":"+metadata.getColumnTypeName(i)+":"+sqlType2JavaType(metadata.getColumnTypeName(i).toLowerCase())+":"+metadata.getColumnDisplaySize(i));
				//metadata.getColumnDisplaySize(i);
				colnames[i] = metadata.getColumnName(i); //      
				colTypes[i] = sqlType2JavaType(metadata.getColumnTypeName(i)); //      		
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/*
	 * mysql        java   */
	private String sqlType2JavaType(String sqlType) {  
        
        if(sqlType.equalsIgnoreCase("bit")){  
            return "boolean";  
        }else if(sqlType.equalsIgnoreCase("tinyint")){  
            return "byte";  
        }else if(sqlType.equalsIgnoreCase("smallint")){  
            return "short";  
        }else if(sqlType.equalsIgnoreCase("INTEGER")){  
            return "int";  
        }else if(sqlType.equalsIgnoreCase("bigint")){  
            return "long";  
        }else if(sqlType.equalsIgnoreCase("float")){  
            return "float";  
        }else if(sqlType.equalsIgnoreCase("decimal") || sqlType.equalsIgnoreCase("numeric")   
                || sqlType.equalsIgnoreCase("real") || sqlType.equalsIgnoreCase("money")   
                || sqlType.equalsIgnoreCase("smallmoney")){  
            return "double";  
        }else if(sqlType.equalsIgnoreCase("varchar") || sqlType.equalsIgnoreCase("char")   
                || sqlType.equalsIgnoreCase("nvarchar") || sqlType.equalsIgnoreCase("nchar")   
                || sqlType.equalsIgnoreCase("text")){  
            return "String";  
        }else if(sqlType.equalsIgnoreCase("datetime") ||sqlType.equalsIgnoreCase("date")){  
            return "java.util.Date";  
        }else if(sqlType.equalsIgnoreCase("image")){  
            return "Blod";  
        }  
          
        return null;  
    }
	/*              java  
	 * */
	public  StringBuffer getClassStr(){
		String className = table.substring(0,1).toUpperCase()+table.substring(1);
		//       
		StringBuffer str = new StringBuffer("");
		//            
		this.doAction();
		//  
		if(null == colnames && null == colTypes) return null;
		
		str.append(this.getClass().getPackage()+";\r
\r
"); // str.append("public class "+className+" {\r
"); // for(int index=1; index < colnames.length ; index++){ str.append(getAttrbuteString(colnames[index],colTypes[index])); } // get,Set for(int index=1; index < colnames.length ; index++){ str.append(getGetMethodString(colnames[index],colTypes[index])); str.append(getSetMethodString(colnames[index],colTypes[index])); } str.append("}\r
"); // String s1 = DB2JavaConvertor.class.getPackage().getName().replace(".", "\\"); String s2 = "src"+File.separator+"main"+File.separator+"java"+File.separator+s1; String s3 = System.getProperty("user.dir")+File.separator+s2; File file = new File(s3); if(!file.exists()){ file.mkdirs(); } BufferedWriter write = null; try { write = new BufferedWriter(new FileWriter(new File(s3+File.separator+className+".java"))); write.write(str.toString()); write.close(); } catch (IOException e) { e.printStackTrace(); if (write != null) try { write.close(); } catch (IOException e1) { e1.printStackTrace(); } } return str; } /* * */ public StringBuffer getAttrbuteString(String name, String type) { if(!check(name,type)) { System.out.println(" "); return null; }; String format = String.format(" private %s %s;
\r", new String[]{type,name}); return new StringBuffer(format); } /* * name type */ public boolean check(String name, String type) { if("".equals(name) || name == null || name.trim().length() ==0){ return false; } if("".equals(type) || type == null || type.trim().length() ==0){ return false; } return true; } /* * get */ private StringBuffer getGetMethodString(String name, String type) { if(!check(name,type)) { System.out.println(" "); return null; }; String Methodname = "get"+GetTuoFeng(name); String format = String.format(" public %s %s(){
\r", new Object[]{type,Methodname}); format += String.format(" return this.%s;\r
", new Object[]{name}); format += " }\r
"; return new StringBuffer(format); } // private String GetTuoFeng(String name) { name = name.trim(); if(name.length() > 1){ name = name.substring(0, 1).toUpperCase()+name.substring(1); }else { name = name.toUpperCase(); } return name; } /* * get */ private Object getSetMethodString(String name, String type) { if(!check(name,type)) { System.out.println(" "); return null; }; String Methodname = "set"+GetTuoFeng(name); String format = String.format(" public void %s(%s %s){
\r", new Object[]{Methodname,type,name}); format += String.format(" this.%s = %s;\r
", new Object[]{name,name}); format += " }\r
"; return new StringBuffer(format); } public static void main(String[] args) throws IOException { DB2JavaConvertor bean = new DB2JavaConvertor(); System.err.println(bean.getClassStr()); //System.out.println(ReflectBean.class.getPackage()); //System.out.println(ReflectBean.class.getPackage().getName()); //System.out.println(ReflectBean.class.getResource("").getPath()); // File directory = new File("");// // String courseFile = directory.getCanonicalPath() ; // System.out.println(courseFile); // // // File f = new File(ReflectBean.class.getResource("").getPath()); // System.out.println(f); // // // URL xmlpath = ReflectBean.class.getClassLoader().getResource(""); // System.out.println(xmlpath); // // String s1 = directory.getAbsolutePath(); // System.out.println(s1); /* String s3 = ReflectBean.class.getPackage().getName().replace(".", "\\"); String s2 = System.getProperty("user.dir")+File.separator+s3; System.out.println(s2);*/ } }