http://java.chinaitlab.com/advance/796954_3.html
Hibernate
太复杂,iBatis
不好用,JDBC
代码太垃圾,DBUtils
在简单与优美之间取得了完美平衡。
一、概述
DbUtils
小巧的Java
数据库操作工具,它在JDBC
的基础上做了科学的封装,旨在简化JDBC
代码混乱与重复。
对于JDBC
代码,存在很多问题,算是对Java的批判:
1
、操作过程复杂,代码操作一个模式,大量的重复。
2
、结果集难以处理,拿到一个ResultSet
干屁啊,一个一个度,转称JavaBean
,后来形成List
,太麻烦了。
3
、到处都强制检查SQLException
,烦不烦啊,影响代码的美观和可读性。
当然,以上的批判不是说JDBC
设计不合理,二是缺乏更高层操作API
的支持。因此才产生了众多的开源数据库操作的框架和工具包。
二、熟悉DBUtils
的API
针对DBUitlsAPI
的包,做个简单的翻译,以便迅速掌握API
的使用。
1
、------------------------------------
包org.apache.commons.dbutils
DbUtils
是一个为简化JDBC
操作的小类库。
接口摘要
ResultSetHandler
将ResultSet
转换为别的对象的工具。
RowProcessor
将ResultSet
行转换为别的对象的工具。
类摘要
BasicRowProcessor - RowProcessor
接口的基本实现类。
BeanProcessor - BeanProcessor
匹配列名到Bean
属性名,并转换结果集列到Bean
对象的属性中。
DbUtils
一个JDBC
辅助工具集合。
ProxyFactory
产生JDBC
接口的代理实现。
QueryLoader
属性文件加载器,主要用于加载属性文件中的 SQL
到内存中。
QueryRunner
使用可插拔的策略执行SQL
查询并处理结果集。
ResultSetIterator
包装结果集为一个迭代器。
2
、------------------------------------
包org.apache.commons.dbutils.handlers
-------ResultSetHandler
接口的实现类
类摘要
AbstractListHandler
将ResultSet
转为List
的抽象类
ArrayHandler
将ResultSet
转为一个Object[]
的ResultSetHandler
实现类
ArrayListHandler
将ResultSet
转换为List<Object[]>
的ResultSetHandler
实现类
BeanHandler
将ResultSet
行转换为一个JavaBean
的ResultSetHandler
实现类
BeanListHandler
将ResultSet
转换为List<JavaBean>
的ResultSetHandler
实现类
ColumnListHandler
将ResultSet
的一个列转换为List<Object>
的ResultSetHandler
实现类
KeyedHandler
将ResultSet
转换为Map<Map>
的ResultSetHandler
实现类
MapHandler
将ResultSet
的首行转换为一个Map
的ResultSetHandler
实现类
MapListHandler
将ResultSet
转换为List<Map>
的ResultSetHandler
实现类
ScalarHandler
将ResultSet
的一个列到一个对象。
3
、------------------------------------
包org.apache.commons.dbutils.wrappers
---
添加java.sql
类中功能包装类。
类摘要
SqlNullCheckedResultSet
在每个getXXX
方法上检查SQL NULL
值的ResultSet
包装类。
StringTrimmedResultSet
取出结果集中字符串左右空格的ResultSet
包装类。
三、环境
Java5
commons-dbutils-1.2-bin.zip
mysql-noinstall-5.1.40-win32.zip
mysql-connector-java-5.1.10.zip
下载地址:
http://apache.freelamp.com/commons/dbutils/binaries/commons-dbutils-1.2-bin.zip
http://gd.tuwien.ac.at/db/mysql/Downloads/MySQL-5.1/mysql-noinstall-5.1.40-win32.zip
http://gd.tuwien.ac.at/db/mysql/Downloads/Connector-J/mysql-connector-java-5.1.10.zip
四、实例
1
、sql
脚本
create
table
user
(
id
int
(11)
not
null
auto_increment,
name
varchar
(50) character
set
latin1
not
null
,
pswd
varchar
(50) character
set
latin1
default
null
,
primary
key
(id)
)
engine=MYISAM auto_increment=1
default
charset=gbk
2
、简单的数据库连接工具
package
stu.lavasoft.dbutils;
import
java.sql.Connection;
import
java.sql.DriverManager;
import
java.sql.SQLException;
/**
*
随便写个数据库连接获取工具,凑合着把例子跑起来
*
* @author leizhimin 2009-11-6 14:48:22
*/
public
class
ConnTools {
private
static
String dirverClassName =
"com.mysql.jdbc.Driver"
;
private
static
String url =
"jdbc:mysql:
//192.168.104.101:3306/testdb?useUnicode=true&characterEncoding=utf8";
private
static
String user = "root";
private
static
String password = "leizhimin";
public
static
Connection makeConnection() {
Connection
conn =
null
;
try
{
Class.forName(dirverClassName);
}
catch
(ClassNotFoundException e) {
e.printStackTrace();
}
try
{
conn
= DriverManager.getConnection(url, user, password);
}
catch
(SQLException e) {
e.printStackTrace();
}
return
conn;
}
}
3
、实体Bean
package
stu.lavasoft.dbutils;
/**
*
实体
Bean
*
* @author leizhimin 2009-11-6 16:05:41
*/
public
class
User {
private
int
id;
private
String name;
private
String pswd;
public
int
getId() {
return
id;
}
public
void
setId(
int
id) {
this
.id = id;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
String getPswd() {
return
pswd;
}
public
void
setPswd(String pswd) {
this
.pswd = pswd;
}
@Override
public
String toString() {
return
"User{"
+
"id="
+ id +
", name='"
+ name + '\'' +
", pswd='"
+ pswd + '\'' +
'}';
}
}
4
、测试类
package
stu.lavasoft.dbutils;
import
org.apache.commons.dbutils.DbUtils;
import
org.apache.commons.dbutils.QueryRunner;
import
org.apache.commons.dbutils.handlers.BeanListHandler;
import
java.sql.Connection;
import
java.sql.SQLException;
import
java.util.List;
/**
* DbUtils
入门
*
* @author leizhimin 2009-11-6 14:47:26
*/
public
class
Test1 {
public
static
void
main(String[] args)
throws
SQLException {
test_insert();
test_find();
}
public
static
void
test_insert()
throws
SQLException {
System.out.println(
"-------------test_insert()-------------"
);
//
创建连接
Connection
conn = ConnTools.makeConnection();
//
创建
SQL
执行工具
QueryRunner
qRunner =
new
QueryRunner();
//
执行
SQL
插入
int
n =
qRunner.update(conn,
"insert into user(name,pswd)
values('iii','iii')"
);
System.out.println(
"
成功插入
"
+ n +
"
条数据!
"
);
//
关闭数据库连接
DbUtils.closeQuietly(conn);
}
public
static
void
test_find()
throws
SQLException {
System.out.println(
"-------------test_find()-------------"
);
//
创建连接
Connection
conn = ConnTools.makeConnection();
//
创建
SQL
执行工具
QueryRunner
qRunner =
new
QueryRunner();
//
执行
SQL
查询,并获取结果
List<User>
list = (List<User>) qRunner.query(conn,
"select id,name,pswd from user"
,
new
BeanListHandler(User.
class
));
//
输出查询结果
for
(User user : list) {
System.out.println(user);
}
//
关闭数据库连接
DbUtils.closeQuietly(conn);
}
}
执行结果:
-------------test_insert()-------------
成功插入
1
条数据!
-------------test_find()-------------
User{id=4, name='bbb', pswd='bbb'}
User{id=3, name='aaa', pswd='bbb'}
User{id=5, name='iii', pswd='iii'}
User{id=6, name='iii', pswd='iii'}
Process finished with exit code 0
分享到:
相关推荐
Apache_Commons_Packages, Common Jar packages provided by Apache Software Foundation, these are called the 2nd Java API !
Commons-DbUtils是Apache的一个开源项目,它提供了一个简单且实用的数据库操作工具包。DbUtils的主要功能包括:连接池管理、SQL执行、结果集处理等。DbUtils与JDBC结合使用,可以避免大量重复的数据库连接关闭、...
文件上传组件_Apache_Commons_FileUpload_应用指南.doc
《Apache Commons DBUtils详解及其在Java数据库操作中的应用》 Apache Commons DBUtils是Apache软件基金会开发的一个开源项目,它提供了一套简洁、高效且实用的工具类,用于简化Java应用程序中的数据库操作。这个...
### Apache Commons 学习知识点详解 #### 一、Apache Commons Lang 概述 Apache Commons Lang 是 Apache Commons 项目中的一个重要组成部分,它为开发者提供了一系列工具类和实用程序,旨在简化日常开发工作。此库...
Apache Commons DBUtils是一个Java库,它简化了与数据库交互的任务,是Java开发中常用的数据访问工具。这个压缩包“commons-dbutils-1.3.zip”包含的是DBUtils库的1.3版本。DBUtils库是Apache Commons项目的一部分,...
本文档主要介绍了 Apache Commons FileUpload 组件的应用指南,旨在帮助开发者快速了解和使用该组件实现文件上传功能。 一、为什么需要文件上传组件? 几乎每一个 Web 应用中都需要为用户提供文件上传的功能,例如...
apache commons dbutils api_zh
Apache社团的一个开源JAR包,提供了很有多用的方法。
commons-lang3.3.1.jar、Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE....
commons-lang3.3.1.jar、Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE....
Apache Commons 是一个由 Apache 软件基金会维护的开源项目,它提供了许多Java库,用于解决常见的编程任务。这些库通常包含实用工具类、数据结构、算法和其他对开发人员有用的组件。"org.apache.commons"是这个项目...
IOUtils 类所在的 jar 文件,我将这个类和所依赖的 类文件单独筛选出来打成的一个 jar 文件。能够轻松的将文件内容读取为字节数组。2GB的文件随便读,只要你的内存够..
"cc_py_commons-0.1.9.tar.gz" 是一个Python库的压缩包,版本为0.1.9,采用tar.gz格式进行打包。在IT行业中,这种类型的文件通常是开发者为了分发和共享代码而创建的。接下来,我们将深入探讨Python库、开发语言、...
资源分类:Python库 所属语言:Python 资源全名:allure_python_commons-2.3.2b1-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods....
commons-dbutils-1.8.1.jar
org.apache.commons的jar包,Apache Commons包含了很多开源的工具。 包括commons-beanutils-1.8.0-bin、commons-betwixt-0.8、commons-cli-1.1、commons-codec-1.3、commons-collections-3.2.1-bin、commons-...