1.0          其他語言
 
 

4.1 Apache Common Dbutils

 
 

Dbutils 是 Apache 提供的一個免費的開源 O/R mapping 庫。它不需要配置檔案就可以將 JDBC 結果集轉換成 Java bean。

這種轉換是基于資料庫欄位名和 Java bean 屬性名。

比如,資料庫 USER 表中欄位名 NAME,會 mapping 到 Java bean User 的 getName()/setName()。這種轉換是結果集一級的,不是表一級的。這意味著,我們可以從多個表中 select 出資料,然後將結果資料 mapping 到 POJO。

在 VelocityWeb 中一點小的增強,那就是 FIRST_NAME 可以 mapping 到 firstName。

下面是查詢單條資料的例子︰

    public boolean checkPassword(String userName, String encryptedPassword) {
        String sql = "select * from signon where username = ?";
        List paraList = new LinkedList();
        paraList.add(userName);
        Signon user = (Signon) this.queryBean(sql, paraList.toArray(), Signon.class);
        if (user == null) {
            // can't find the user with login name
            return false;
        }
        return encryptedPassword.equals(user.getPassword());
    }	  

以及查詢多條資料的例子︰

    public java.util.List getAll(){
        String sql = "select * from product";
        return this.queryBeanList(sql, null, Product.class);//List 中每個元素都是一個 Product 物件
    }	

不足之處在于,Dbutils 基于 JDBC java.sql.PreparedStatement,SQL 參數使用索引來定位,不是使用名稱。對于復雜查詢,這樣處理參數比較容易寫錯。