天天看點

java : commons-beanutils DynaBean

原文:百度文庫:利用 Commons元件 beanutils、dbutils簡化JDBC資料庫操作

BeanutilsJDBCTest.java

package test;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Properties;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.beanutils.ResultSetDynaClass; 

public class BeanutilsJDBCTest {
       // 
   public static Connection getConnection() throws SQLException, IOException
   { 
       Connection con = null;
       try {
      	Properties props = new Properties();
      	FileInputStream in = new FileInputStream("database.properties");
      	props.load(in);
      	in.close();
      	
      	String driver = props.getProperty("driver");
      	String url = props.getProperty("url");
      	String username = props.getProperty("username");
      	String password = props.getProperty("password");
 
        Class.forName(driver);
        con = DriverManager.getConnection(url, username, password);
       } catch (IOException ex) {
              ex.printStackTrace();
       } catch (SQLException se) {
              se.printStackTrace();
       } catch (ClassNotFoundException ce) {
              ce.printStackTrace();
       }
       return con;
   }
       // 
       public static void main(String[] args) {
       	String sh =null;
        if (args.length ==1){
            sh = args[0];
        } else {
            System.out.println(" usage: java -cp %JAR%;. test.BeanutilsJDBCTest 44 ");
            return;
        } 
              if (sh.length() >2) return;
              long startTime = System.currentTimeMillis();
 
              Connection con = null;
              Statement st = null;
              ResultSet rs = null;
              ResultSetMetaData rsmd = null;
              try {
                     con = getConnection();
                     st = con.createStatement();
                     String sql = "select * from table1 where code like '"+sh+"%';";
                     rs = st.executeQuery(sql);
                     rsmd = rs.getMetaData();
                     int count = rsmd.getColumnCount(); // 取列數
                     String[] columns = new String[count]; // 列名數組
                     for(int i=1; i<=count; i++){
                            columns[i-1] = rsmd.getColumnName(i);
                     }

                     // 列印表頭,中文列名
                     System.out.println("編碼\t中文地名");
                     StringBuffer buf = new StringBuffer();
                     // 輸出結果集
                     ResultSetDynaClass rsdc = new ResultSetDynaClass(rs);
                     Iterator itr = rsdc.iterator();
                     while (itr.hasNext()) {
                            DynaBean dBean = (DynaBean) itr.next();
                            for (String column : columns){
                                   buf.append(PropertyUtils.getSimpleProperty(dBean, column)+"\t");
                            }
                            buf.append("\r\n");
                     }
                     System.out.println(buf.toString());
              } catch (Exception e) {
                     e.printStackTrace();
              } finally {
                     try {
                            if (rs != null) { rs.close();}
                            if (st != null) { st.close();}
                            if (con != null) { con.close();}
                     } catch (Exception e) {
                            e.printStackTrace();
                     }
              }
              long endTime = System.currentTimeMillis();
              System.out.println(" Time: "+(endTime-startTime)+" ms");
       }

} 
           

set JAR=mysql-connector-java-5.1.24-bin.jar

set JAR=%JAR%;commons-beanutils-1.9.3.jar;commons-logging-1.2.jar

javac -cp %JAR% -d . -encoding gbk BeanutilsJDBCTest.java

java -cp %JAR%;. test.BeanutilsJDBCTest 44