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 参数使用索引来定位,不是使用名称。对于复杂查询,这样处理参数比较容易写错。