`
log_cd
  • 浏览: 1100224 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

apache commons DbUtils

阅读更多
一、关于DbUtils
    commons-dbutils 是 Apache 组织提供的一个开源 JDBC 工具类库,对传统操作数据库的类进行二次封装,可以把结果集转化成List。
项目主页: http://commons.apache.org/dbutils/
文档地址: http://commons.apache.org/dbutils/examples.html
下载地址:http://commons.apache.org/downloads/download_dbutils.cgi

(1)org.apache.commons.dbutils
DbUtils  : 提供如关闭连接、装载 JDBC 驱动程序等常规工作的工具类
QueryRunner : 该类简单化了 SQL 查询,它与 ResultSetHandler 组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。
QueryLoader : 属性文件加载器,主要用于加载属性文件中的 SQL 到内存中。

(2)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

(3)org.apache.commons.dbutils.wrappers
SqlNullCheckedResultSet :该类是用来对sql语句执行完成之后的的数值进行null的替换。
StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim()

二、例子
public class TestDbUtils {

	/**
	 * BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象
	 */
	public static void getBeanListData() {
		Connection conn = getConnection();
		QueryRunner qr = new QueryRunner();
		try {
			ResultSetHandler rsh = new BeanHandler(TUser.class);
			TUser usr = (TUser) qr.query(conn,"SELECT id,username,gender FROM t_user WHERE id=10000",rsh);
			System.out.println(StringUtils.center("findById", 50, '*'));
			System.out.println("id=" + usr.getId() + " name=" + usr.getUsername() + " gender=" + usr.getGender());
			
			List results = (List) qr.query(conn,"SELECT id,username,gender FROM t_user",
					new BeanListHandler(TUser.class));
			System.out.println(StringUtils.center("findAll", 50, '*'));
			for (int i = 0; i < results.size(); i++) {
				TUser user = (TUser) results.get(i);
				System.out.println("id=" + user.getId() + "  name=" + user.getUsername() + "  gender=" + user.getGender());
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DbUtils.closeQuietly(conn);
		}
	}

	/**
	 * MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map
	 */
	public static void getMapListData() {
		Connection conn = getConnection();
		QueryRunner qr = new QueryRunner();
		try {
			List results = (List) qr.query(conn,"SELECT id,username,gender FROM t_user",
					new MapListHandler());
			for (int i = 0; i < results.size(); i++) {
				Map map = (Map) results.get(i);
				System.out.println("id=" + map.get("id") + " name="	+ map.get("username") + " gender=" + map.get("gender"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DbUtils.closeQuietly(conn);
		}
	}

	/**
	 *新增和更新例子
	 */
	public static void insertAndUpdateData(){
		Connection conn = getConnection();
		QueryRunner qr = new QueryRunner();
		try{
			//创建一个数组来存要insert的数据
			Object[] insertParams = {"John Doe", "000000","男"};
			int inserts = qr.update(conn, "INSERT INTO t_user(username,password,gender) VALUES (?,?,?)",
                    insertParams );
			System.out.println("inserted " + inserts + " data");
			
			Object[] updateParams = {"111111", "John Doe"};
		    int updates = qr.update(conn, "UPDATE t_user SET password=? WHERE username=?",
		                              updateParams );
		    System.out.println("updated "+ updates + " data");
		}catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DbUtils.closeQuietly(conn);
		}
	}

	/**
	 * Unlike some other classes in DbUtils, this class(SqlNullCheckedResultSet) is NOT thread-safe.
	 */
	public static void findUseSqlNullCheckedResultSet(){
		Connection conn = getConnection();
		try{
			Statement stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery("SELECT id, username, gender FROM t_user");
			SqlNullCheckedResultSet wrapper = new SqlNullCheckedResultSet(rs);
			wrapper.setNullString("N/A"); // Set null string
			rs = ProxyFactory.instance().createResultSet(wrapper);
			
			while(rs.next()){
				System.out.println("id="+rs.getInt("id") + " username=" + rs.getString("username")
						+ " gender="+rs.getString("gender"));
			}
			
			rs.close();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DbUtils.closeQuietly(conn);
		}
	}
	
	/****数据库连接*** */
	public static Connection getConnection() {
		Connection conn = null;
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://127.0.0.1/springapp?useUnicode=true&characterEncoding=gb2312";

		DbUtils.loadDriver(driver);

		try {
			conn = DriverManager.getConnection(url, "root", "root");
		} catch (SQLException ex) {
			ex.printStackTrace();
		}
		return conn;
	}
	
}
分享到:
评论
3 楼 isaiahzhong 2013-01-17  
     说实在,非常喜欢DBUtils这个小巧的框架,封装了JDBC,怎么说呢?使用起来还是不如jdbcTemplate操作方便,不过代码非常简洁,大致上看了看看实际上就是三个方法,查询,增删改,批量操作,自学JDBC非常有帮助
2 楼 log_cd 2010-09-03  
dbutils很少用!一般要往其它系统读/写点信息时才用下!
1 楼 bosshida 2010-09-03  
用起来,感觉apache的dbutils与spring 的 jdbcTemplate差不多
但dbutils查询数据为空时,返回一个长度为零的对象,注意不为null;
jdbcTemplate对查询数据为空时,会抛出一个EmptyResultDataAccessException
个人觉得这是dbutils做得比较好的一面,
另一方面,jdbcTemplate对查询结果为map,list时,不需要额外的实现Handler,
只需要调用queryForMap(SqlString, Params[])这个方法,
比dbutils的query(SqlString, xxxHandler, params[])方法简便

相关推荐

    apache commons dbutils api_zh

    apache commons dbutils api_zh

    Apache Commons DbUtils 1.6 API

    Apache Commons DbUtils 1.6 API 是一个Java库,它为数据库操作提供了简化的、异常安全的工具。这个API设计的目的是为了简化JDBC(Java Database Connectivity)编程,减轻开发人员处理数据库连接、事务和结果集时的...

    apache commons dbutils实现增删改查功能

    Apache Commons DBUtils 是一个基于 Apache Commons JDBC 的轻量级数据库操作库,它简化了 Java 应用程序中的数据库访问,特别是在执行 SQL 查询和处理结果集时。DBUtils 提供了一种安全、简单的方式来处理数据库...

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

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

    Apache Commons DbUtils 包是一组用于简化 JDBC 开发的 Java 实用程序类

    Apache Commons DbUtils 是一个开源的 Java 库,它是 Apache Commons 项目的一部分,旨在为 Java 开发者提供一种简单且安全的方式来处理 JDBC(Java Database Connectivity)操作。DbUtils 的设计目标是减少那些繁琐...

    commons-dbutils-1.4.jar

    《Apache Commons DBUtils详解及其在Java数据库操作中的应用》 Apache Commons DBUtils是Apache软件基金会开发的一个开源项目,它提供了一套简洁、高效且实用的工具类,用于简化Java应用程序中的数据库操作。这个...

    commons-dbutils-1.7-API文档-中文版.zip

    赠送jar包:commons-dbutils-1.7.jar; 赠送原API文档:commons-dbutils-1.7-javadoc.jar; 赠送源代码:commons-dbutils-1.7-sources.jar; 赠送Maven依赖信息文件:commons-dbutils-1.7.pom; 包含翻译后的API文档...

    commons-dbutils-1.7.zip

    Apache Commons DBUtils是一个Java库,它为数据库操作提供了一些实用工具和帮助类,极大地简化了JDBC编程。这个"commons-dbutils-1.7.zip"压缩包包含了版本1.7的DBUtils库,这是一个在2005年发布的稳定版本。DBUtils...

    Apache Commons DbUtils 1.5 API CHM

    数据库查询工具包 Commons-DbUtils 1.5 api 文档,官方下载,原创制作

    commons-dbutils.jar.rar

    `commons-dbutils.jar.rar` 是一个包含Apache Commons DBUtils库的不同版本的压缩文件,主要用于Java应用程序中的数据库操作。DBUtils是一个实用程序库,它简化了JDBC(Java Database Connectivity)的使用,提供了...

    commons-dbutils的再封装jar包

    commons-dbutils的再封装jar包,Blog文件的示例代码

    Apache-DBUtils封装JDBC

    使用了Apache Commons DbUtils库中的类和方法封装JDBC,使用了org.apache.commons.dbutils.QueryRunner、org.apache.commons.dbutils.handlers.BeanHandler和org.apache.commons.dbutils.handlers.BeanListHandler等...

    Commons-dbutils1.7 jar包.rar

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

    Apache Commons DbUtils工具包使用介绍

    ### Apache Commons DbUtils工具包使用介绍 #### 一、简介 **Apache Commons DbUtils** 是一个用于简化 Java JDBC 操作的轻量级工具包。它通过封装 JDBC 的基础功能,帮助开发者减少冗余代码,提高代码的可读性...

    commons-dbutils-1.3.zip

    Apache Commons DBUtils是一个Java库,它简化了与数据库交互的任务,是Java开发中常用的数据访问工具。这个压缩包“commons-dbutils-1.3.zip”包含的是DBUtils库的1.3版本。DBUtils库是Apache Commons项目的一部分,...

    apache commons jar(commons所有的jar包,从官网下载提供.zip

    apache commons jar(commons所有的jar包,从官网下载提供给大家) 因为涉及jar太多,包括有src源代码,只需要3分,希望大家理解,我也是从官网花了很长时间才一个一个下完,需要的请自取。全部是zip文件,每个对应的...

    commons-dbutils-1.6.rar所有jar包

    Apache Commons DBUtils是一个Java库,它为处理数据库连接提供了简单且健壮的工具。这个压缩包文件"commons-dbutils-1.6.rar"包含了DBUtils的1.6版本,这是一个非常受欢迎的开源项目,用于简化Java数据库编程。...

    commons-dbutils-1.6

    Apache Commons DBUtils是Java开发中的一个实用工具库,主要用于简化JDBC(Java Database Connectivity)的使用。这个项目在1.6版本中包含了两个主要的jar文件:`commons-dbutils-1.6.jar`和`commons-dbutils-1.6-...

    commons-dbutils-1.7

    Apache Commons DbUtils是Java开发中的一个实用工具库,专门针对JDBC(Java Database Connectivity)进行优化,以提供更简洁、高效的数据库操作API。这个库在Java社区中广泛使用,因为它大大减轻了开发者处理数据库...

Global site tag (gtag.js) - Google Analytics