`
廖世勇
  • 浏览: 100961 次
  • 性别: Icon_minigender_1
  • 来自: 湖南郴州
社区版块
存档分类
最新评论

dbutils开源项目用法

 
阅读更多

dbutils开源项目用法

DBUtils包括3个包:
org.apache.commons.dbutils
org.apache.commons.dbutils.handlers
org.apache.commons.dbutils.wrappers
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

org.apache.commons.dbutils
DbUtils 关闭链接等操作
QueryRunner 进行查询的操作

org.apache.commons.dbutils.handlers
ArrayHandler :将ResultSet中第一行的数据转化成对象数组
ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[]
BeanHandler :将ResultSet中第一行的数据转化成类对象
BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象
ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象
KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据
MapHandler :将ResultSet中第一行的数据存成Map映射
MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map
ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object

org.apache.commons.dbutils.wrappers
SqlNullCheckedResultSet :对ResultSet进行操作,改版里面的值
StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim[size=large]



dbutils 开源项目用法:

项目地址:http://commons.apache.org/dbutils/
最新版本为 1.1

英文文档中这样写到:

DbUtils is a very small library of classes so it won't take long to go throughthe javadocs for each class.

The core classes/interfaces in DbUtils are QueryRunner and ResultSetHandler.

You don't need to know about any other DbUtils classes to benefit from usingthe library.

大概意思是: DbUtils 是一个非常小的类库 因此你不需要花费太长的时间去研究javadocs

它的核心接口是 QueryRunner 和ResultSetHandler

你不需要关心其他DbUtils的类如何使用

-------------------------------------------------------------------------------------------------------------------------

QueryRunner
构造 QueryRunner :
QueryRunner()
QueryRunner(javax.sql.DataSource ds)

有两种方法来构造QueryRunner 一种是无参数的 一种是有DataSource类型参数的构造方法这里使用DataSource来构造它 使用连接池来构造它的好处就是 我们无需管Connection对象的创建与关闭了后面调用QueryRunner对象的方法也无需传入Connection对象了那我们就要用到另外一个开源数据库连接池组件dbcp以下为dbcp的用法:

Java代码

publicclassDBUtils{

privatestaticPropertiesproperties;

privatestaticDataSourcedataSource;

privatestaticConnectionconn;

static{

try{

properties=newProperties();

//载入dbcp的配置文件

properties.load(DBUtils.class..getResourceAsStream("/dbcpconfig.properties"));

//创建个BasicDataSourceFactory对象用于创建连接池对象

BasicDataSourceFactoryb=newBasicDataSourceFactory();

//把properties对象设置给BasicDataSourceFactory

dataSource=b.createDataSource(properties);

}catch(Exceptione){

e.printStackTrace();

}

}

publicstaticDataSourcegetdataSource(){

returndataSource;

}

}

public class DBUtils {

private static Properties properties;

private static DataSource dataSource;

private static Connection conn;

static {

try {

properties = new Properties();

//载入dbcp的配置文件

properties.load(DBUtils.class..getResourceAsStream("/dbcpconfig.properties"));

//创建个BasicDataSourceFactory对象用于创建连接池对象

BasicDataSourceFactory b = new BasicDataSourceFactory();

//把properties对象设置给BasicDataSourceFactory

dataSource = b.createDataSource(properties);

} catch (Exception e) {

e.printStackTrace();

}

}

public static DataSource getdataSource() {

return dataSource;

}

}



注意:需要导入dbcp连接池的jarcommons-dbcp-1.2.1.jar 和所依赖的commons-pool-1.2.jar

commons-collections-3.1.jar

Java代码

//这样我们就可以构造个queryRunner对象了

QueryRunnerqueryRunner=newQueryRunner(DBUtils.getdataSource());

//这样我们就可以构造个queryRunner对象了

QueryRunner queryRunner = new QueryRunner(DBUtils.getdataSource());



QueryRunner 主要方法 :

Java代码

//更新一列

queryRunner.update("updateUserssetusername=?,password=?whereid=?",newString[]{"11","22","1"});

//删除一列

   queryRunner.update("deletefromUserswhereid=?",1);

//更新一列

queryRunner.update("update Users setusername=?,password=? where id = ?", newString[]{"11","22","1"});

//删除一列

   queryRunner.update("delete from Users where id =?", 1);



--------------------------------------------------------------------------------------------------------------

如果要 使用 QueryRunner的查询方法 也就是query()方法的话那么就需要有对象来接收查询出来的ResultSet

用什么来接收呢? 要用到 实现ResultSetHandler接口的类

1. BeanHandler 返回个entitybean对象

Java代码

//指定返回哪个entitybean

ResultSetHandlerrsh=newBeanHandler(Users.class);

QueryRunnerqueryRunner=newQueryRunner(DBUtils.getdataSource());

Usersusers=(Users)queryRunner.query("select*fromUserswhereid=?",2,rsh);

System.out.println(users.getUsername());

//指定返回哪个 entitybean

ResultSetHandler rsh = new BeanHandler(Users.class);

QueryRunner queryRunner = new QueryRunner(DBUtils.getdataSource());

Users users = (Users) queryRunner.query("select * from Userswhere id=?",2, rsh);

System.out.println(users.getUsername());



--------------------------------------------------------------------------------------------------------------

2. BeanListHandler 返回个List List里装的是entitybean对象

Java代码

QueryRunnerqueryRunner=newQueryRunner(DBUtils.getdataSource());

ResultSetHandlerrsh=newBeanListHandler(Users.class);

List<Users>list=(List)queryRunner.query(

"select*fromUsers",rsh);

for(Usersuser:list){

System.out.println(user.getUsername());

}

QueryRunner queryRunner = new QueryRunner(DBUtils.getdataSource());

ResultSetHandler rsh = new BeanListHandler(Users.class);

List<Users> list = (List) queryRunner.query(

"select * from Users ", rsh);

for(Users user:list){

System.out.println(user.getUsername());

}



--------------------------------------------------------------------------------------------------------------

3. ArrayListHandler 返回List 对象 list里装的为Object数组

Java代码

QueryRunnerqueryRunner=newQueryRunner(DBUtils.getdataSource());

//使用ArrayListHandler实现类来存放结果会返回ArrayList对象

ResultSetHandlerrsh=newArrayListHandler();

//list里装的是对象数组

List<Object[]>list=(List)queryRunner.query(

"select*fromUsers",rsh);

for(Object[]user:list){

for(Objectobj:user)

{

System.out.println(obj);

}

}

QueryRunner queryRunner = new QueryRunner(DBUtils.getdataSource());

// 使用ArrayListHandler 实现类来存放结果会返回ArrayList对象

ResultSetHandler rsh = new ArrayListHandler();

//list里装的是对象数组

List<Object[]> list = (List) queryRunner.query(

"select * from Users ", rsh);

for(Object[] user:list) {

for(Object obj:user)

{

System.out.println(obj);

}

}



-------------------------------------------------------------------------------------------------------------

4. ColumnListHandler 返回List 对象


注意: 构造ColumnListHandler() 对象时候如果 是无参数的话

像这样 ResultSetHandler rsh= new ColumnListHandler();

查询出来的List 里放的类型为主键的类型值为主键的值;

Java代码

ResultSetHandlerrsh=newColumnListHandler();

List<Integer>list=(List)queryRunner.query("select*fromUsers",rsh);

//System.out.println(list.get(0).getClass().getSimpleName());

for(Integerin:list){

System.out.println(in);

}

ResultSetHandler rsh = new ColumnListHandler();

List<Integer> list = (List) queryRunner.query("select *from Users ", rsh);

//System.out.println(list.get(0).getClass().getSimpleName());

for(Integer in:list){

System.out.println(in);

}

构造 ColumnListHandler() 对象时候如果 是有参数的话像这样 ResultSetHandler rsh = newColumnListHandler(主键值); 那么查询出来的List 里放的是就是这个主键对应的一行的记录;Java代码

ResultSetHandlerrsh=newColumnListHandler(2);

List<String>list=(List)queryRunner.query(

"select*fromUsers",rsh);

for(Stringin:list){

System.out.println(in);

}

ResultSetHandler rsh = new ColumnListHandler(2);

List<String> list = (List) queryRunner.query("select *from Users ", rsh);

for(String in:list){

System.out.println(in);

}


-------------------------------------------------------------------------------------------------------------

5. KeyedHandler 根据键返回Map

Java代码

ResultSetHandlerrsh=newKeyedHandler();

//map里装的key为主键的值value为主键对应的那行记录名称和记录

Mapmap=(Map)queryRunner.query("selectid,username,passwordfromUsers",rsh);

//根据主键值出去那一列

//Mapt=(Map)map.get(2);

System.out.println(map.get(2));

ResultSetHandler rsh = new KeyedHandler();

//map里装的key为主键的值value 为主键对应的那行记录名称和记录

Map map = (Map)queryRunner.query("select id,username,password from Users ", rsh);

//根据主键值出去那一列

// Map t = (Map) map.get(2);

System.out.println(map.get(2));


---------------------------------------------------------------------------------------------------------------

6. MapHandler 根据键返回Map

Java代码

QueryRunnerqueryRunner=newQueryRunner(DBUtils.getdataSource());

ResultSetHandlerrsh=newMapHandler();

Mapmap=(Map)queryRunner.query("select*fromUsers",rsh); System.out.println(map);

QueryRunner queryRunner = newQueryRunner(DBUtils.getdataSource());

ResultSetHandler rsh = new MapHandler();

Map map = (Map) queryRunner.query(

"select * from Users ", rsh);

System.out.println(map);

---------------------------------------------------------------------------------------------------------------
7. ScalarHandler 根据键返回第一行记录

Java代码

QueryRunnerqueryRunner=newQueryRunner(DBUtils.getdataSource());

//这样就会返回第一行记录名字为username的值

ResultSetHandlerrsh=newScalarHandler("username");

//这的类型根据表里数据的类型而定如果上面

ResultSetHandlerrsh=newScalarHandler("username");

//取出来的类型为int的话那么这里也必须由int来接收

Stringresult=(String)queryRunner.query("select*fromUserswhereid=99", rsh);

System.out.println(result);

分享到:
评论

相关推荐

    dbutils开源项目用法.doc

    ### DBUtils开源项目详解 #### 一、简介 DBUtils是一个强大的开源库,隶属于Apache Commons项目,主要用于简化Java中JDBC的使用。它的设计目的是为了减少JDBC编码时的样板代码,提供更简洁、更安全的数据库操作...

    dbutils jar包及使用介绍

    **dbutils jar包及使用介绍** Apache Commons DBUtils是一个轻量级的...以上就是对`commons-dbutils-1.6`版本的简要介绍,详细内容可以参考提供的`dbutils开源项目用法.doc`文档,结合实际项目需求进行学习和应用。

    DButils使用实例

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

    commons-dbutils-1.4.jar

    下面我们将深入探讨DBUtils的主要功能和使用方法。 1. 数据库连接管理:DBUtils提供了ConnectionHelper类,用于管理数据库连接的生命周期。它遵循了数据库连接的获取、使用和释放的最佳实践,避免了资源泄露和空闲...

    Dbutils 的jar包

    Dbutils 是 Apache Commons DbUtils 的简称,它是一个用于简化 Java 数据库编程的开源库。Dbutils 基于 JDBC(Java Database Connectivity),提供了一套简洁、高效且易于使用的API,帮助开发者更方便地处理数据库...

    dbutils + oracle 增删改查批量插入示例

    首先,`dbutils`是Apache软件基金会提供的一个开源项目,它基于Java,提供了简单易用的API,使得开发者可以便捷地执行SQL语句,处理结果集,实现了对数据库的基本操作。它的核心组件包括QueryRunner和DBUtils,其中...

    C3P0和DButils

    DBUtils是Apache Commons项目的一部分,它是一个实用工具库,简化了JDBC编程。commons-dbutils-1.4.jar是这个库的一个版本,它提供了一套简单易用的API,帮助开发者处理常见的数据库操作,如执行SQL查询、处理结果集...

    dbutils-1.3架包和源码

    Apache Commons DBUtils是一个Java库,它为处理数据库连接提供了一个简单且有效的方法。这个库的主要目标是简化数据库操作,使得开发人员能够更专注于SQL查询和业务逻辑,而不是处理底层的数据库连接管理。DBUtils是...

    Apache commons dbutils 1.4jar是JDBC的开源数据库工具包

    Apache Commons DBUtils 1.4 是一个开源的Java库,它是针对Java Database Connectivity (JDBC) API的一个实用工具集。这个库旨在简化数据库操作,使开发者能够更方便、更安全地处理数据库连接和数据操作。DBUtils的...

    commons-dbutils-1.6.rar所有jar包

    这个压缩包文件"commons-dbutils-1.6.rar"包含了DBUtils的1.6版本,这是一个非常受欢迎的开源项目,用于简化Java数据库编程。DBUtils的核心理念是通过提供实用程序类来消除JDBC的繁琐和易错性,使开发人员能够更专注...

    python-dbutils 简单封装

    Python的dbutils模块是Apache的一个开源项目,它提供了一套用于数据库操作的工具类,能够帮助简化数据库连接和管理,提高开发效率。本教程将详细讲解如何对dbutils进行简单的封装,以更好地适应实际的Python数据库...

    commons-dbutils-1.3.zip

    DBUtils是Apache Commons项目的一部分,它是一个开源的Java库,专为简化数据库操作而设计。在Java编程中,DBUtils提供了许多实用的功能,使得开发者在处理JDBC(Java Database Connectivity)时可以更加高效和便捷。...

    apache dbutils中文说明

    Apache DBUtils是一个开源的Java库,它为Java程序员提供了便捷的方式来处理JDBC(Java Database Connectivity)操作。DBUtils的主要目标是简化JDBC编程,减少代码重复,并帮助避免常见的JDBC编程错误。它不是一个...

    dbutils+c3p0

    DBUtils是Apache软件基金会提供的一个开源Java库,它是基于Jakarta Commons项目的一个实用工具。DBUtils的主要目标是简化Java与关系型数据库之间的交互,减少数据库操作的繁琐代码。它提供了一套实用工具类,用于...

    DBUtils(通用的数据库工具类)

    DBUtils是Apache软件基金会开发的一个开源Java库,它提供了一套简单、易用且高度封装的数据库操作API,主要用于简化Java应用程序对数据库的访问。DBUtils的核心思想是为数据库操作提供一个安全、高效的抽象层,使得...

    Commons-dbutils1.7 jar包.rar

    commons-dbutils包是Apache开源组织提供的用于操作数据库的工具包。简单来讲,这个工具包就是用来更加方便我们操作数据库的,最近工作中使用了一下,感觉确实方便很多,基本告别自己封装JDBC代码对数据库进行增删改...

    dbcp,dbutils

    `DBUtils`是Apache的另一个开源项目,它是一个实用的Java数据库操作工具包,简化了JDBC的使用。DBUtils的主要功能包括: 1. **QueryRunner**: 提供了一系列静态方法,用于执行SQL查询和更新操作,如query(), update...

    commons-dbutils-1.4 bin+src

    源码中包含了详细的注释,有助于理解每个方法的作用和用法。 3. 关于DBUtils的知识点: - **数据库连接管理**:DBUtils使用连接池管理数据库连接,提高了性能,避免了资源浪费。默认使用的是Jakarta DBCP,但也...

    dbutils工具包和源文件

    `dbutils` 是一个基于Java的开源数据库操作工具包,它在JDBC(Java Database Connectivity)的基础上提供了一层简洁而强大的封装,极大地简化了数据库的编程工作。`dbutils` 由Apache软件基金会开发并维护,是许多...

    commons-dbutils-1.1,commons-dbutils-1.3资源包

    这个资源包包含了两个版本,即1.1和1.3,它们都是Apache软件基金会开发并维护的开源项目。DBUtils的主要目标是简化数据库编程,通过提供一个易于使用的API来封装JDBC(Java Database Connectivity)操作,从而减少...

Global site tag (gtag.js) - Google Analytics