dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>java>开源框架>文章内容
翻译 commons dbutils例子example中文官方文档
来源:百家拳 作者:

本站原创内容,转载请标明出处 百家拳软件项目研究室

基本用法

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()方法来转换这些字符串。


上一篇:利用JAVA的动态属性之反射原理实现一个简单AOP容器 - AOP的实现原理分析   下一篇:Common Dbutils组件用法详解(含源代码)
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·关于JSF和Struts的讨论
·Struts教程-Struts模块化编程教
·Struts入门经验
·用科学的思维方法指导软件的设计
·Hibernate配置文件中映射元素详
·Spring中事件处理的小技巧
·struts2.0pring2.0 hibernate3.2
·struts2.0 spring2.0 hibernate3
·浅谈hibernate lazy fetch
·Hibernate的Fetch
·优化hibernate性能的几点建议
·Hibernate中的取策略延迟加载
  相关文章
·利用JAVA的动态属性之反射原理实
·Common Dbutils组件用法详解(含
·利用Jakarta Commons组件beanuti
·Common Dbutils组件的使用
·Apache DBUtils实践
·使用 Spring 2.5 TestContext 测
·Spring 2.5架构图
·Spring 2.5 标注开发的简单例子
·JBPM工作流引擎内核设计思想及构
·JBPM工作流引擎内核设计思想及构
·JBPM工作流引擎内核设计思想及构
·JBPM工作流引擎内核设计思想及构
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763