數據庫表轉javaBean


復制后修改部分代碼

package com.study;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class TableToJavaBean {

	Connection conn = null;
	
	Statement stmt = null;
	
	public Connection getConnection(){
		
		String driverName = "";
		
	    String url = "";
		
		String username = "";
		
	    String pwd = "";
		
		try {
   			InputStream in = this.getClass().getResourceAsStream("/dbconfig.properties");
   	   	    
   	   		Properties pros = new Properties();  
   	   		
			pros.load(in);
			
			driverName = pros.getProperty("database.driver");
			url = pros.getProperty("database.url");
			username =  pros.getProperty("database.user");
			pwd =  pros.getProperty("database.password");
			
			System.out.println(driverName+"=="+url);
			
			Class.forName(driverName);
			
		    conn = DriverManager.getConnection(url, username, pwd);
		    
		} catch (SQLException e) {
		} catch (ClassNotFoundException e) {
		} catch (IOException e) {
		}
		return conn;
	}
	
	
	public void closeDB(PreparedStatement pstmt) {
		if (pstmt != null) {
			try {
				pstmt.close();
			} catch (Exception ex) {
			}
		}
	}
	
	public void closeDB(Statement stmt) {
		if (stmt != null) {
			try {
				stmt.close();
			} catch (Exception ex) {
			}
		}
	}

	public void closeDB(Connection con) {
		if (con != null) {
			try {
				con.close();
			} catch (Exception ex) {
			}
		}
	}

	
	public void toPojo(String tableName) {
		
		String sql = "select * from "+tableName;
 		try {
 			
 			conn = getConnection();
 			
 			PreparedStatement statement = conn.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++){
 				colnames[i] = metadata.getColumnName(i); //獲取字段名稱
 				colTypes[i] = sqlType2JavaType(metadata.getColumnTypeName(i)); //獲取字段類型		
 			}
 		} catch (SQLException e) {

 		}
	}

	 	private String[] colnames; // 列名數組
	 	//列名類型數組  
	 	private String[] colTypes;
	 
	 	/*
	 	 * 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("int")){  
	             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 "Date";  
	         }else if(sqlType.equalsIgnoreCase("image")){  
	             return "Blod";  
	         }  
	           
	         return null;  
	     }
	 	/*獲取整個類的字符串並且輸出為java文件
	 	 * */
	 	public  StringBuffer getClassStr(String tableName){
	 		//輸出的類字符串
	 		StringBuffer str = new StringBuffer("");
	 		//獲取表類型和表名的字段名
	 		this.toPojo(tableName);
	 		//校驗
	 		if(null == colnames && null == colTypes) return null;
	 		//拼接
	 		str.append("public class "+tableName+" {\r\n");
	 		//拼接屬性
	 		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\n");
	 		//輸出到文件中
	 		File file = new File(tableName+".java");
	 		BufferedWriter write = null;

	 		try {
	 			write = new BufferedWriter(new FileWriter(file));
	 			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;\n\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(){\n\r", new Object[]{type,Methodname});
	 		format += String.format("        return this.%s;\r\n", new Object[]{name});
	 		format += "    }\r\n";
	 		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){\n\r", new Object[]{Methodname,type,name});
	 		format += String.format("        this.%s = %s;\r\n", new Object[]{name,name});
	 		format += "    }\r\n";
	 		return new StringBuffer(format);
	 	}
	 }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM