`
log_cd
  • 浏览: 1089956 次
  • 性别: 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,网页形式的api文档

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

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

    apache commons dbutils实现增删改查功能

    apache commons dbutils实现增删改查功能

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

    Apache Commons DbUtils 包是一组用于简化 JDBC 开发的 Java 实用程序类。原则上这不能说是一个持久层框架,它提供了一些Jdbc的操作封装来简化数据查询和记录读取操作

    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文档...

    Apache Commons DbUtils 1.5 API CHM

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

    commons-dbutils的再封装jar包

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

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

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

    Commons-dbutils1.7 jar包.rar

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

    Apache Commons DbUtils工具包使用介绍

    主要介绍了Apache Commons DbUtils工具包使用介绍,本文介绍了DBUtils是什么东西、熟悉DBUtils的一些问题、API介绍等内容,需要的朋友可以参考下

    Dbutils项目实例

    org apache commons dbutils org apache commons dbutils handlers org apache commons dbutils wrappers DBUtils封装了对JDBC的操作 简化了JDBC操作 可以少写代码 org apache commons dbutils DbUtils 关闭链接等...

    commons-dbutils-1.4.jar

    commons-dbutils-1.4jar包,让你在java内对数据库的操作更加简单

    Commons DbUtils 使用说明.rar

    commons-dbutils 是 Apache 组织提供的一个...主要讲解两个类(org.apache.commons.dbutils.DbUtils 和org.apache.commons.dbutils.QueryRunner)和一个接口(org.apache.commons.dbutils.ResultSethandler)。 ......

    commons-dbutils

    commons-dbutils

    commons-dbutils-1.6.jar包

    包org.apache.commons.dbutils DbUtils是一个为简化JDBC操作的小类库. 接口摘要 ResultSetHandler 将ResultSet转换为别的对象的工具. RowProcessor 将ResultSet行转换为别的对象的工具. 类摘要 BasicRowProcessor ...

    uncommons-dbutils:Apache Commons DBUtils 的现代化分支

    uncommons-dbutils 现代化分支。 目的是制作更灵活的 API 并修复以前的设计错误,同时保持原始的小尺寸和紧密关注。 完整文档位于特征交易支持通过异步查询轻量级:执行查询并将ResultSet映射到对象。 就这样。 使用...

    commons-dbutils.jarv1.6官方免费版

    commons-dbutils.jar是在java架构开发时十分重要的一款.jar包,正确的使用commons dbutils可以让你的开发事半功倍,如果您在开发过程中缺少这款jar包,马上来下载commonsdbutils jar包吧! 软件功能: commons-...

    commons-dbutils-1.7

    Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能

    apache-commons下源码大放送

    apache-commons下全部官方源码和官方API文档,其中有: commons-beanutils-1.8.0 commons-codec commons-collections commons-dbcp commons-dbutils commons-fileupload commons-io commons-lang commons-lang3 ...

Global site tag (gtag.js) - Google Analytics