`
bdk82924
  • 浏览: 564950 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

DbUtils的使用

 
阅读更多
DbUtils的使用

今天在看一段源码的时候,看到了可以使用DbUtils来操作Jdbc

大致研究了DbUtils ,它对Jdbc的操作进行了二次封装,这样我们对数据库的操作就更加方便了,有时间的话大家一定要研究下

http://cuics-100.iteye.com/blog/841207
这篇文章解读了DbUtils的源码 ,其实源码并不是太复杂,大家可以把源码包下载下来看看

http://baike.baidu.com/view/4877026.htm
百度百科

http://commons.apache.org/dbutils/
DbUtils官网


研究了一段 使用 org.apache.commons.dbutils.handlers的代码

package dbutils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.*;

public class HandlersExample
{
    public static void main(String[] args)
    {
        Connection conn = null;
        String url = "jdbc:sybase:Tds:10.47.181.179:4100?language=us_english";
        String jdbcDriver = "com.sybase.jdbc3.jdbc.SybDriver";
        String user = "sa";
        String password = "";
        DbUtils.loadDriver(jdbcDriver);
        try
        {
            conn = DriverManager.getConnection(url, user, password);
            QueryRunner qr = new QueryRunner();

            // 插入一条数据
            qr.update(conn, "insert into zxinweb..guestbook(id,name) values (5,'name5')");

            // 采用ArrayHandler方式查询单条记录
            System.out.println("....ArrayHandler....");
            Object[] r1 = qr.query(conn, "select id,name  from zxinweb..guestbook where id =5", new ArrayHandler());
            for (int i = 0; i < r1.length; i++)
            {
                System.out.print(r1[i] + " ");
            }
            System.out.println("");
            // 采用ArrayListHandler方式查询 多条记录
            System.out.println("....ArrayListHandler....");
            List r2 = qr.query(conn, "select id,name  from zxinweb..guestbook", new ArrayListHandler());

            for (int i = 0; i < r2.size(); i++)
            {
                Object[] o = (Object[]) r2.get(i);
                for (int x = 0; x < o.length; x++)
                {
                    System.out.print(o[x] + " ");
                }
                System.out.println(" ");
            }

            // 采用BeanHandler方式查询 单条记录
            System.out.println("....BeanHandler....");
            Guestbook r3 = (Guestbook) qr.query(conn, "select id,name  from zxinweb..guestbook", new BeanHandler(
                    Guestbook.class));
            System.out.println(r3);

            // 采用BeanListHandler方式查询
            System.out.println("....BeanListHandler....");
            List<Guestbook> r4 = (List) qr.query(conn, "select id,name  from zxinweb..guestbook", new BeanListHandler(
                    Guestbook.class));

            for (int i = 0; i < r4.size(); i++)
            {
                Guestbook gb = r4.get(i);
                System.out.println(gb);
            }

            // 采用BeanMapHandler方式查询 查询多条
            System.out.println("....BeanMapHandler....");

            ResultSetHandler<Map<Integer, Guestbook>> h5 = new BeanMapHandler(Guestbook.class, "id");
            Map<Integer, Guestbook> r5 = qr.query(conn, "select id,name from zxinweb..guestbook", h5);
            Guestbook g5 = r5.get(1); // jane's id is 1
            Iterator<Entry<Integer, Guestbook>> it5 = r5.entrySet().iterator();
            while (it5.hasNext())
            {
                System.out.println(it5.next());
            }

            // 采用ColumnListHandler方式查询 获取单个字段多条记录
            System.out.println("....ColumnListHandler....");
            List lName = (List) qr.query(conn, "select id,name from zxinweb..guestbook", new ColumnListHandler("name"));
            for (int i = 0; i < lName.size(); i++)
            {
                String name = (String) lName.get(i);
                System.out.println(name);
            }

            // 采用KeyedHandler方式查询 单个字段多条
            System.out.println("....KeyedHandler....");
            ResultSetHandler h7 = new KeyedHandler("id");
            Map map7 = (Map) qr.query(conn, "select id, name  from zxinweb..guestbook", h7);

            Iterator<Entry<Integer, Map<String, String>>> it7 = map7.entrySet().iterator();
            while (it7.hasNext())
            {
                Entry<Integer, Map<String, String>> entry = it7.next();
                System.out.println(entry.getKey() + " " + entry.getValue().get("name"));
            }

            // 采用MapHandler方式查询 单条记录
            System.out.println("....MapHandler....");
            Map map8 = (Map) qr.query(conn, "select id,name  from zxinweb..guestbook where id =5 ", new MapHandler());

            if (map8 != null)
            {
                System.out.println(map8.get("name"));
            }

            // 采用MapListHandler方式查询
            System.out.println("....MapListHandler....");
            List results2 = (List) qr.query(conn, "select id,name  from zxinweb..guestbook", new MapListHandler());
            for (int i = 0; i < results2.size(); i++)
            {
                Map gb = (Map) results2.get(i);
                System.out.println(gb.get("id") + " " + gb.get("name"));
            }

            // 采用ScalarHandler方式查询
            System.out.println("....ScalarHandler....");
            String name = (String) qr.query(conn, "select id,name  from zxinweb..guestbook where id =5", new ScalarHandler("name"));

            System.out.println(name);

            // 删除一条数据
            qr.update(conn, "delete from  zxinweb..guestbook where id =5 ");
        } catch (SQLException e)
        {
            e.printStackTrace();
        } finally
        {
            DbUtils.closeQuietly(conn);
        }
    }
}





结果

....ArrayHandler....
5 name5 
....ArrayListHandler....
1 name1  
2 name2  
5 name5  
....BeanHandler....
dbutils.Guestbook:[  id:1  name:name1]
....BeanListHandler....
dbutils.Guestbook:[  id:1  name:name1]
dbutils.Guestbook:[  id:2  name:name2]
dbutils.Guestbook:[  id:5  name:name5]
....BeanMapHandler....
1=dbutils.Guestbook:[  id:1  name:name1]
2=dbutils.Guestbook:[  id:2  name:name2]
5=dbutils.Guestbook:[  id:5  name:name5]
....ColumnListHandler....
name1
name2
name5
....KeyedHandler....
1 name1
2 name2
5 name5
....MapHandler....
name5
....MapListHandler....
1 name1
2 name2
5 name5
....ScalarHandler....
name5

分享到:
评论

相关推荐

    DBUtils使用和jar包.rar

    压缩包中存在DbUtils使用说明文档、jar包以及一个使用样例。commons-dbutils 是 Apache 组织提供的一个开源 JDBC 工具类库,对传统操作数据库的类进行二次封装,可以把结果集转化成List。

    commons_dbutils使用说明

    使用 Commons dbutils 可以极大地简化 JDBC 编程,避免了许多手动处理连接、声明和结果集的工作,同时也提高了代码的可读性和可维护性。例如,使用 `QueryRunner` 执行查询和更新操作时,只需要提供 SQL 语句、参数...

    _dbutils使用说明.doc

    ### _dbutils使用说明 #### 一、Commons-dbutils概览 Commons-dbutils是Apache Commons项目下的一款用于简化Java数据库操作的工具库。它对标准的JDBC API进行了封装,提供了更简洁、易用的接口,尤其适用于频繁...

    commons-dbutils使用简单范例--简化jdbc编程

    以下是一个简单的DBUtils使用示例,展示如何执行一个查询并处理结果: ```java import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons....

    Apache DBUtils使用总结

    在使用 DBUtils 时,需要注意以下几点: 1. **混用 JDBC 和 DBUtils**:DBUtils 并不是完全替代 JDBC 的解决方案,而是对其进行了一层简单的封装。在需要的地方,你可以将 DBUtils 与原生的 JDBC 代码混合使用,以...

    DBUtils使用jar

    DBUtils 使用的jar commons-dbutils-1.3.jar commons-dbutils-1.4.jar commons-dbutils-1.5.jar commons-dbcp-1.2.1.zip commons-collections-3.1.jar

    DbUtils使用

    本文介绍了如何使用apache dbutils。主要以测试代码介绍。本文的代码使用了dbcp,请参见文章:dbutils与dbcp整合

    Commons DbUtils 使用说明.rar

    commons-dbutils 是 Apache 组织提供的一个开源 JDBC 工具类库,对传统操作数据库的类进行二次封装,可以把结果集转化成List。 Commons dbutils主要相关类及接口的简介: 主要讲解两个类(org.apache.commons....

    -dbutils使用说明.pdf

    Apache Commons dbutils 是一个在互联网和计算机科学领域中广泛使用的开源工具库,专门针对Java的JDBC(Java Database Connectivity)进行简化和优化。这个库的主要目的是为了减轻开发人员在处理数据库操作时的工作...

    -dbutils使用说明.docx

    在Java编程中,尤其是在处理数据库操作时,Apache Commons DBUtils库是一个非常实用的工具,它简化了JDBC(Java Database Connectivity)的使用。DBUtils提供了一种更安全、更易于管理的方式来进行数据库交互,避免...

    DButils使用实例

    在本实例中,我们将深入探讨DButils的核心功能和使用方法。 1. **连接池管理** DButils支持多种数据库连接池,如C3P0、DBCP、HikariCP等。连接池是数据库管理的关键组件,它能够有效地重用数据库连接,减少创建和...

    数据库连接池和DBUtils使用1

    使用DBUtils,我们可以方便地进行数据库的CRUD操作,而无需关注底层的连接管理细节。 总结来说,数据库连接池和DBUtils是Java开发中优化数据库性能的重要工具。通过合理使用,不仅可以提高程序效率,还能有效管理和...

    commons-dbutils-1.7.jar

    3. 连接管理:DBUtils使用DataSource接口管理数据库连接,遵循JDBC连接池规范,提高了性能并减少了资源消耗。 4. 结果集处理:DBUtils提供了BeanHandler、MapHandler等处理结果集的工具,可以将结果集直接转换为...

    使用dbutils操作数据库入门

    DBUtils使用连接池管理数据库连接。在实际应用中,需要配置连接池的参数,如数据库URL、用户名、密码等。以下是一个使用DBCP连接池的示例配置: ```java Properties props = new Properties(); props.setProperty(...

    dbutils的jar包和源码

    - **异常处理**: dbutils 使用了统一的异常处理机制,所有与数据库交互相关的异常都被封装为 `DbUtils.DbException`,简化了错误处理流程。 **2. 使用 dbutils 执行 SQL** 使用 dbutils,你可以按照以下步骤执行 ...

    commons-dbutils-1.6

    7. **安全性**:DBUtils使用PreparedStatement来防止SQL注入攻击,这是处理用户输入数据时的一个重要安全措施。 8. **API简洁**:DBUtils的API设计简洁明了,学习成本低,易于理解和使用。 在描述中提到的"这个...

    dbutils框架

    1.2 高效执行:DBUtils使用Statement和PreparedStatement接口,优化了批处理和查询操作,提高了性能。 1.3 简化数据库操作:它提供了QueryRunner类,封装了CRUD(创建、读取、更新、删除)操作,使数据库交互变得...

    DbUtils应用开发例子--DbUtilsExample.zip

    Apache Common DbUtils是操作数据库的组件,对传统操作数据库的类(JDBC)进行二次封装,可以把结果集转化成List。 DbUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。 应用实践小结: 一、...

    dbutils dbutils dbutils dbutils

    使用 DBUtils 可以显著提高数据库操作的稳定性和效率,特别是在Web服务、数据分析或其他大规模数据处理项目中。通过合理的配置和使用,DBUtils 可以帮助开发者构建更加健壮、高效的数据库应用。 在实际应用中,例如...

    commons-dbutils-1.4 bin+src

    - **数据库连接管理**:DBUtils使用连接池管理数据库连接,提高了性能,避免了资源浪费。默认使用的是Jakarta DBCP,但也可以与其他连接池(如C3P0、HikariCP)配合使用。 - **异常处理**:DBUtils对JDBC的异常...

Global site tag (gtag.js) - Google Analytics