Apache-DBUtils包對數據庫的操作

jopen 10年前發布 | 16K 次閱讀 持久層框架 DbUtils

?commons-dbutils 是 Apache 組織提供的一個開源 JDBC工具類庫,它是對JDBC的簡單封裝,學習成本極低,并且使用dbutils能極大簡化jdbc編碼的工作量,同時也不會影響程序的性能。


?API介紹:
–org.apache.commons.dbutils.QueryRunner
–org.apache.commons.dbutils.ResultSetHandler

–工具類
?org.apache.commons.dbutils.DbUtils。   


QueryRunner類有兩類主要方法:

query() : 用于查詢數據

update() : 用于增刪改


ResultSetHandler接口用與將查詢到的數據按要求轉換為另一種格式


?ArrayHandler:把結果集中的第一行數據轉成對象數組。
?ArrayListHandler:把結果集中的每一行數據都轉成一個數組,再存放到List中。
?BeanHandler:將結果集中的第一行數據封裝到一個對應的JavaBean實例中。
?BeanListHandler:將結果集中的每一行數據都封裝到一個對應的JavaBean實例中,存放到List里。
?ColumnListHandler:將結果集中某一列的數據存放到List中。
?KeyedHandler(name):將結果集中的每一行數據都封裝到一個Map里,再把這些map再存到一個map里,其key為指定的key。
?MapHandler:將結果集中的第一行數據封裝到一個Map里,key是列名,value就是對應的值。
?MapListHandler:將結果集中的每一行數據都封裝到一個Map里,然后再存放到List


-------------------------------------------------以下為具體的Demo--------------------------------------------------------------

QueryRunner.update()

 /** 
     * 測試 QueryRunner 類的 update 方法 
     * 該方法可用于 INSERT, UPDATE 和 DELETE 
     */  
    @Test  
    public void testQueryRunnerUpdate() {  
        //1. 創建 QueryRunner 的實現類  
        QueryRunner queryRunner = new QueryRunner();  

        String sql = "DELETE FROM customers " +  
                "WHERE id IN (?,?)";  

        Connection connection = null;  

        try {  
            connection = JDBCTools.getConnection();  
            //2. 使用其 update 方法  
            queryRunner.update(connection,   
                    sql, 12, 13);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally{  
            JDBCTools.releaseDB(null, null, connection);  
        }  

    }

BeanHandler:把結果集的第一條記錄轉為創建BeanHandler對象時傳入的Class參數對應的對象.

 
public void testBeanHandler() {  

        QueryRunner queryRunner = new QueryRunner();  
        Connection conn = null;  

        try {  
            conn = JDBCTools.getConnection();  
            String sql = "SELECT id, name customerName, email, birth "  
                    + "FROM customers WHERE id>=?";  
            Customer customer = queryRunner.query(conn, sql, new BeanHandler(  
                    Customer.class), 5);  

            System.out.println(customer);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            JDBCTools.releaseDB(null, null, conn);  
        }  
    }


BeanListHandler:把結果集轉為一個List,該List不為null,但可能為空集合(即size()方法返回0)

 
public void testBeanListHandler(){  
        String sql = "SELECT id, name customerName, email, birth " +  
                "FROM customers";  


        QueryRunner queryRunner = new QueryRunner();  

        Connection conn = null;  

        try {  
            conn = JDBCTools.getConnection();  

            Object object = queryRunner.query(conn, sql,   
                    new BeanListHandler<>(Customer.class));             

            System.out.println(object);   
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally{  
            JDBCTools.releaseDB(null, null, conn);  
        }  
    }


MapHandler:返回SQL語句對應的第一條記錄對應的Map對象.鍵:SQL查詢的列名(不是列的別名),值:列的值.

 
public void testMapHandler(){  
        Connection connection = null;  
        QueryRunner queryRunner = new QueryRunner();  

        String sql = "SELECT id, name customerName, email, birth " +  
                "FROM customers WHERE id = ?";  

        try {  
            connection = JDBCTools.getConnection();  
            Map<String, Object> map = queryRunner.query(connection,   
                    sql, new MapHandler(), 4);  

            System.out.println(map);   
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally{  
            JDBCTools.releaseDB(null, null, connection);  
        }  
    }


MapLiatHandler:將結果轉化為一個Map的List. MapLiatHandler:返回的多條記錄對應的Map的集合.

 
public void testMapListHandler(){  
        Connection connection = null;  
        QueryRunner queryRunner = new QueryRunner();  

        String sql = "SELECT id, name, email, birth " +  
                "FROM customers";  

        try {  
            connection = JDBCTools.getConnection();  
            List<Map<String, Object>> mapList = queryRunner.query(connection,   
                    sql, new MapListHandler());  

            System.out.println(mapList);   
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally{  
            JDBCTools.releaseDB(null, null, connection);  
        }  
    }

ScalarHandler:把結果集轉為一個數值(可以是任意類型)返回

public void testScalarHandler(){  
        Connection connection = null;  
        QueryRunner queryRunner = new QueryRunner();  

        String sql = "SELECT name FROM customers " +  
                "WHERE id = ?";  

        try {  
            connection = JDBCTools.getConnection();  
            Object count = queryRunner.query(connection, sql,   
                    new ScalarHandler(), 6);  

            System.out.println(count);   
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally{  
            JDBCTools.releaseDB(null, null, connection);  
        }  
    }
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!