之前就听别人说过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工具类jar包,DBUtil工具类简化操作数据库,使程序员更加方便进行CRUD的操作。提供给大家学习使用
DBUtil类内部包含有连接池创建和连接池的关闭,下载后记得修改URL
dbUtil使用:调用Apache Commons DBUtil组件的数据库操作类 采用DBCP作为数据源,数据源在Spring中已经配置好
韩顺平SqlHelper,DBUtil工具类,非静态可用,dbinfo为sql server 版
DBUtil的类,在WEB开发当中有许多项目都需要用它,可以不用重复写,这样很方便
commons-dbutil帮助文档
DBUtil(ASP。NET数据库连接工具类),集成了目前常用数据库,开发程序时不用再写一大堆连接代码 ,直接调用就行,节省时间,方便快速
Apache最新的DButil工具类已经文档
NULL 博文链接:https://hdzhangyanfeng.iteye.com/blog/2047944
DBUtil使用于javaWeb并使用了c3p0连接池,简化开发。***
DbUtil和tomcat数据源配置实例
Laravel开发-dbutil Laravel的数据库实用程序
DbUtil 对 JDBC 进行简单的封装,帮我们做了很多工作,省去很多重复冗余的代码。 但 DbUtil 对类的自动装载没有进行较好的封装 本demo实现了数据库中字段若为下划线分隔,而对应的实体类中是以驼峰式命名的情况进行...
对apache的dbutil包的改进,改善了代码结构,增加了直接对resultset输出json的支持
dbutil工具类使用demo继承maven druidd butil工具类使用demo继承maven druid
该包主要是关于数据库操作的一些方法,但是关于DButil包的用法我还没有整理好,数据库的驱动是SQL2005的,六种连接不同数据库的操作语句.doc文件,还有ASCII的编码字符集
补丁MySQL+JDBC+DBUtil+c3p0史上最全数据库讲义.rar
prop.load(DButil.class.getResourceAsStream("/db_config.properties")); info = new DButil(); info.driver = prop.getProperty("driver"); info.dbName = prop.getProperty("dbName"); info.host = prop....
Struts2+displaytag+dbutil 可运行完整web工程 jdk1.6、1.7 tomcat6.0
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。