之前就听别人说过Dbutil这个Apache开源组件很好用.一直也没时间来自己实践下,今正好周末加上圣诞就在家好好来研究了一下.最新的版本是1.3,其下在地址是:
http://commons.apache.org/dbutils/download_dbutils.cgi
其jar结构
commons.dbutils是一个对JDBC操作进行封装的类集,不要懒其它的jar,避免了重复繁琐的JDBC代码.
这里基本用到的类是QueryRunner,ResultSetHandler及其子类
1.ArrayHandler:把结果集中的第一行数据转成对象数组。
2.ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
3.BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
4.BeanListHandler:将结果集中的每一行数据都封装到一个对应的 JavaBean实例中,存放到List里。
5.ColumnListHandler:将结果集中某一列的数据存放到List中。
6.KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。
7.MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
8.MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。
9.ScalarHandler:将结果集中某一条记录的其中某一列的数据存成 Object。
这是我的demo结构图:
============= 数据库帮助类,是不是比JDBC更写的代码更少更简洁==========
package com.huawei.dbUtils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DbUtileutil {
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConnection()
{
String url="jdbc:mysql://127.0.0.1:3306/db_votemanage?useUnicode=true&characterEncoding=UTF-8";
Connection conn = null;
try {
conn=DriverManager.getConnection(url, "root", "root");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}
DbUtil的CRUD方法:
package com.huawei.daoImpl;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import sun.security.x509.ReasonFlags;
import com.huawei.bean.Channel;
import com.huawei.dbUtils.DbUtileutil;
/**
* @name 何枫
* @date 2010-12-17
* @action VoteDAOImpl.java
* @time 下午16:18:52
* @package_name com.huawei.DbUtil
* @project_name DbUtilTest
*/
public class VoteDAOImpl {
// 以下部分代码采用ArrayHandler存储方式查询
public void testArrayHandler() {
System.out.println("------testArrayHandler----");
String sql = "select *from tb_channel";
ResultSetHandler handler = new ArrayHandler(); // 返回一行的object[]
// ResultSetHandler handler = new
// ArrayListHandler();//返回list,每一行的object[]
QueryRunner query = new QueryRunner();
DbUtileutil util = new DbUtileutil();
Connection conn = null;
conn = util.getConnection();
try {
Object[] arr = (Object[]) query.query(conn, sql, handler);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i].toString());
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
DbUtils.close(conn);
} catch (SQLException e) {
// ignore
}
}
}
// 以下部分代码采用ArrayListHandler存储方式查询
public void testArrayListHandler() {
System.out.println("------testArrayHandler----");
String sql = "select *from tb_channel";
ResultSetHandler handler = new ArrayListHandler();// 返回list,每一行的object[]
QueryRunner query = new QueryRunner();
DbUtileutil util = new DbUtileutil();
Connection conn = null;
conn = util.getConnection();
try {
List array = (List) query.query(conn, sql, handler);
for (int j = 0; j < array.size(); j++) {
Object[] arr = (Object[])array.get(j);
/*for (int k = 0; k < arr.length; k++) {
System.out.println(arr[k].toString());
}*/
System.out.println(arr[0].toString()+"========="+arr[1].toString());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
DbUtils.close(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*====================================================*/
// 以下部分代码采用BeanHandler存储方式查询
public void testBeanHandler() {
System.out.println("-------testBeanHandler------");
String sqlBeanListHandler = "select *from tb_channel where channelID=?";
Object[] arr = new Object[] { "7" };
ResultSetHandler handler = new BeanListHandler(Channel.class);
QueryRunner runner = new QueryRunner();
DbUtileutil util = new DbUtileutil();
Connection conn = null;
conn = util.getConnection();
try {
List list = (List) runner.query(conn, sqlBeanListHandler, arr,handler);
for (int i = 0; i < list.size(); i++) {
Channel user = (Channel) list.get(i);
System.out.println(user.getChannelID() + " "+ user.getChannelName());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
DbUtils.close(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*====================================================*/
// 以下部分代码采用BeanListHandler存储方式查询
public void testBeanListHandler() {
System.out.println("------BeanListHandler-----");
String sql = "select *from tb_channel";
ResultSetHandler handler = new BeanListHandler(Channel.class);
QueryRunner query = new QueryRunner();
DbUtileutil util = new DbUtileutil();
Connection conn = null;
conn = util.getConnection();
try {
List list = (List) query.query(conn, sql, handler);
for (int i = 0; i < list.size(); i++) {
Channel channel = (Channel) list.get(i);
System.out.println(channel.getChannelID() + "============"+ channel.getChannelName());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
DbUtils.close(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*====================================================*/
// 以下部分代码采用KeyeHandler存储方式查询
public void testKeyeHandlet()
{
System.out.println("--------testKeyeHandlet--------");
String sql = "select *from tb_channel";
ResultSetHandler handler = new KeyedHandler("channelID");
QueryRunner runner = new QueryRunner();
DbUtileutil util = new DbUtileutil();
Connection conn=null;
conn=util.getConnection();
try {
Map map = (Map)runner.query(conn, sql, handler);
Map user = (Map)map.get(3);
System.out.println(user.get("channelName"));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
DbUtils.close(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*====================================================*/
// 以下部分代码插入一条数据
public void insert()
{
System.out.println("-------Insert---------");
String sql ="insert into tb_channel(channelName)values('亚洲杯')";
QueryRunner query = new QueryRunner();
DbUtileutil utileutil = new DbUtileutil();
Channel channel = new Channel();
Connection conn=null;
conn=utileutil.getConnection();
//Object[] param = new Object[]{channel.getChannelID(),channel.getChannelName()};
try {
query.update(conn, sql);
//query.update(conn, sql, param);
System.out.println("======Insert添加成功!!!======");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
DbUtils.close(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*====================================================*/
// 以下部分代码更新一条数据
public void upload()
{
System.out.println("---------upload更新数据库----------");
String sql ="update tb_channel set channelName='德甲'where channelID=9";
QueryRunner query = new QueryRunner();
DbUtileutil util = new DbUtileutil();
Connection conn=null;
conn=util.getConnection();
try {
query.update(conn, sql);
System.out.println("==========更新数据库成功============");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
DbUtils.close(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*====================================================*/
// 以下部分代码删除一条数据
public void delete()
{
System.out.println("------delete----------");
String sql ="delete from tb_channel where channelID=1";
QueryRunner query = new QueryRunner();
DbUtileutil util = new DbUtileutil();
Connection conn=null;
conn=util.getConnection();
try
{
query.update(conn, sql);
System.out.println("========数据删除成功!!!=========");
} catch (SQLException ex) {
ex.printStackTrace();
try {
DbUtils.rollback(conn);
} catch (SQLException e) {
e.printStackTrace();
}
} finally {
DbUtils.closeQuietly(conn);
}
}
}

- 大小: 19.7 KB

- 大小: 33.5 KB
分享到:
相关推荐
Dbutil,全称为Apache Commons DbUtils,是一款由Apache软件基金会开发的开源Java工具包,它为JDBC(Java Database Connectivity)提供了一层简单的封装,旨在让数据库操作变得更加便捷且不易出错。DbUtil的设计目标...
DBUtil工具类是Java开发中常见的一种数据库操作辅助类,它的主要目的是为了简化数据库的CRUD(创建、读取、更新、删除)操作,提高开发效率。DBUtil通常集成了连接池技术,如Druid、C3P0或HikariCP等,以优化数据库...
DBUtil 是一个在ASP.NET开发环境中常用的数据库连接工具类,它的设计目的是为了简化数据库操作,减少程序员编写重复的连接和断开数据库的代码,从而提高开发效率和代码的可维护性。通过使用DBUtil,开发者可以快速地...
DBUtil工具类是Java开发中常见的一种设计,用于简化数据库操作,提高开发效率。它通常包含了一系列静态方法,可以执行SQL语句,处理结果集,进行数据库连接的创建、管理和关闭等。这样的工具类在DAO(数据访问对象)...
韩顺平SqlHelper和DBUtil工具类是为了解决这一问题而设计的,它们提供了一种方便的方式来处理SQL Server数据库。这两个工具类是非静态的,这意味着它们可以被实例化并复用,从而避免了静态类可能带来的线程安全问题...
DButil 是一个数据库操作工具类,它封装了常见的SQL操作,如模糊查询、分页查询、数据的增删改查等。这样的工具类在实际开发中非常常见,它简化了数据库交互的代码,提高了开发效率。下面将详细介绍DButil封装中的...
在Laravel框架中,`dbutil`通常指的是数据库操作的实用工具或自定义库,它扩展了Laravel原生的数据库处理能力,提供了一系列便利的方法,以帮助开发者更高效地进行数据操作。本文将深入探讨Laravel开发中的`dbutil`...
在这个场景下,`DBUtil` 类被用来简化与C3P0连接池的交互,以方便地进行数据库操作。下面我们将详细探讨`DBUtil` 的使用方法以及C3P0连接池的工作原理。 1. **C3P0简介** C3P0是由Miguel Grinberg创建的一个开源...
`DbUtil`是一个常见的数据库操作工具类,用于简化数据库连接的创建、关闭等操作,而Tomcat数据源(JNDI数据源)是应用服务器(如Tomcat)提供的一种管理数据库连接的机制。这两种方式都能有效地管理和优化数据库连接...
在Java编程中,数据库操作是不可或缺的一部分,而`dbutil`通常是指用于简化数据库操作的工具包或类库。在本场景中,我们讨论的是如何使用Java与SQL Server进行连接,以及可能涉及到的XML配置文件的修改。下面将详细...
"dbutil+c3p0"这个组合涉及到两个关键组件:DBUtils和C3P0,它们都是Java数据库连接(JDBC)的辅助工具,使得数据库操作更加高效和便捷。下面将详细阐述这两个工具以及它们在实际应用中的作用。 首先,DBUtils是...
本主题将深入探讨“通用数据库分页”以及如何通过扩展dbutil工具来实现这一功能。我们将从以下几个方面展开讨论: 1. **数据库分页原理**: 数据库分页的基本思想是将数据分成若干个页,每次只返回用户请求的一页...
DBUtil类内部包含有连接池创建和连接池的关闭,下载后记得修改URL
在IT行业中,数据库操作是核心任务之一,而DBUtil包作为一种通用的数据库操作工具,能够极大地简化编程工作。本文将详细解析DBUtil包的使用、SQL Server 2005驱动包的功能,以及ASCII编码字符集的相关知识。 首先,...
DBUtil和c3p0则是两个在Java开发中常用的数据库连接池工具,它们可以提高数据库操作的效率和性能。 **MySQL** MySQL是一个开源、免费的SQL数据库,提供了强大的数据存储和查询能力。它的优点包括高效、稳定、易于...
Struts2、DisplayTag和DbUtil是Java Web开发中常用的三个框架或库,它们在构建高效、可维护的Web应用程序中发挥着重要作用。 Struts2是Apache软件基金会下的一个开源MVC(Model-View-Controller)框架,它提供了一...
`.NET连接Mysql - MYSQL4dotNet-DBUtil`这个项目是专为使用C#语言在Windows CE(Wince)环境下连接MySQL数据库而设计的一个实用工具类库。`DBUtil.cs`文件很可能是这个库的核心组件,它提供了方便的方法来执行SQL...
本教程将围绕"DBUtil",一个简单的JDBC工具类,来介绍如何使用配置文件进行SQL连接和数据库的基本操作。这个工具类适用于初学者学习数据库连接管理。 首先,我们来看"db.properties"文件,这是用来存储数据库连接...
DBUtil的类,在WEB开发当中有许多项目都需要用它,可以不用重复写,这样很方便
Oracle JDBC DbUtil 是一个用于简化Java应用程序与Oracle数据库交互的工具包。这个工具包通过提供便利的类和方法,使得开发者能够更高效地执行SQL语句、管理数据库连接以及处理结果集。在给定的文件中,我们可以看到...