DBUtils基本用法

DbUtils是一个非常小的类库,所以不需要花费太长的时间来浏览javadocs中的每个类。DbUtils的核心的类/接口是 QueryRunnerResultSetHandler。使用这个框架带来的好处是你不需要了解其它类的细节。下面的例子是介绍了如何将这些类一起使用。

//创建一个ResultSetHandle接口的实现来转换数据,将数据放进一个Object

//的数组。

ResultSetHandler h = new ResultSetHandler() {

    public Object handle(ResultSet rs) throws SQLException {

        if (!rs.next()) {

            return null;

        }

        ResultSetMetaData meta = rs.getMetaData();

        int cols = meta.getColumnCount();

        Object[] result = new Object[cols];

 

        for (int i = 0; i < cols; i++) {

            result[i] = rs.getObject(i + 1);

        }

        return result;

    }

};

//创建一个QueryRunner用来从被给定的数据源中连接。

QueryRunner run = new QueryRunner(dataSource);

 

// Execute the query and get the results back from the handler

Object[] result = (Object[]) run.query(

    "SELECT * FROM Person WHERE name=?", "John Doe", h);

你也可以用java.sql.Connection对象来,做一个预先的查询来代替DataSource注意在这个例子中,查询之后你要负责关闭连接。

 

ResultSetHandler h = ... // 用上面例子相同的方法定义一个handler

//没有数据源所以我们必须手动连接

QueryRunner run = new QueryRunner();

 

Connection conn = ... //打开一个连接

try{

    Object[] result = (Object[]) run.query(

        conn, "SELECT * FROM Person WHERE name=?", "John Doe", h);

        // do something with the result

       

} finally {

//用这个帮助文件的方法DbUtils.close(),所以我们不必检测连接是否为空

    DbUtils.close(conn); 

}

ResultSetHandler接口的实现

在上面的例子中我们实现了ResultSetHandler接口将一行数据转换,送进了一个对象数组中。我们在很多项目中很清楚的实现这个接口。DbUtils提供了很多这种接口的实现,在这个包org.apache.commons.dbutils.handlers里的实现类将数据转换成arrays, Maps, JavaBeans。每个实现类,都调用了converts的方法,来将ResultSet所有行的数据转换成我们要的数据类型。

QueryRunner run = new QueryRunner(dataSource);

// BeanHandler来转换一行结果集的数据,将其送到PersonJavaBean

ResultSetHandler h = new BeanHandler(Person.class);

 

//在参数里写一条执行的SQL语句,返回的结果强制转换成Person类型,第二个参数上输入刚才设置的h

Person p = (Person) run.query(

    "SELECT * FROM Person WHERE name=?", "John Doe", h);

自定义RowProcessor

每个被提供的ResultSetHandler实现都接受一个RowProcessor的接口来完成转换的过程。缺省的handlers,用BasicRowProcessor来实现但是你可以实现一个自定义的插件。最常用的方法是实现toBean()的方法来处理自定义数据库类型。

自定义 BeanProcessor

BasicRowProcessor中的方法是的细节是BeanProcessor转换ResultSet的实现。你可以继承这个类,重载这些方法。

BeanProcessor将一个数据库表中的列映射到bean的属性,如javadoc里面写的BeanProcessor.toBean()。列名必须匹配bean的属性名。例如,firstname列将要调用响应beansetFirstName()方法,将数据存到javabean的对象里。然而,许多数据库列名的字符既不能被使用,又不是典型的java方法名。你可以做下面2种方法之一:

1,             sql中加入别名来匹配javabean的属性名。

2,             继承BeanProcessor子类,并且重写mapColumnsToProperties()方法来转换这些字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值