Apache Commons DbUtils 快速上手
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 */
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 */
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 */
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 dbutils api_zh
Apache Commons DbUtils 1.6 API 是一个Java库,它为数据库操作提供了简化的、异常安全的工具。这个API设计的目的是为了简化JDBC(Java Database Connectivity)编程,减轻开发人员处理数据库连接、事务和结果集时的...
Apache Commons DBUtils 1.4 是一个开源的Java库,它是针对Java Database Connectivity (JDBC) API的一个实用工具集。这个库旨在简化数据库操作,使开发者能够更方便、更安全地处理数据库连接和数据操作。DBUtils的...
《Apache Commons DBUtils详解及其在Java数据库操作中的应用》 Apache Commons DBUtils是Apache软件基金会开发的一个开源项目,它提供了一套简洁、高效且实用的工具类,用于简化Java应用程序中的数据库操作。这个...
EnhancedJDBC是一个基于Apache Commons DbUtils构建并扩展其功能的纯JDBC持久层工具,项目包含410个文件,主要由401个Java源文件组成,辅以少量批处理脚本、Markdown文档、版本控制忽略文件、许可协议文件、XML配置...
赠送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 是一个基于 Apache Commons JDBC 的轻量级数据库操作库,它简化了 Java 应用程序中的数据库访问,特别是在执行 SQL 查询和处理结果集时。DBUtils 提供了一种安全、简单的方式来处理数据库...
数据库查询工具包 Commons-DbUtils 1.5 api 文档,官方下载,原创制作
Apache Commons DbUtils 是一个开源的 Java 库,它是 Apache Commons 项目的一部分,旨在为 Java 开发者提供一种简单且安全的方式来处理 JDBC(Java Database Connectivity)操作。DbUtils 的设计目标是减少那些繁琐...
使用了Apache Commons DbUtils库中的类和方法封装JDBC,使用了org.apache.commons.dbutils.QueryRunner、org.apache.commons.dbutils.handlers.BeanHandler和org.apache.commons.dbutils.handlers.BeanListHandler等...
commons-dbutils的再封装jar包,Blog文件的示例代码
`commons-dbutils.jar.rar` 是一个包含Apache Commons DBUtils库的不同版本的压缩文件,主要用于Java应用程序中的数据库操作。DBUtils是一个实用程序库,它简化了JDBC(Java Database Connectivity)的使用,提供了...
commons-dbutils包是Apache开源组织提供的用于操作数据库的工具包。简单来讲,这个工具包就是用来更加方便我们操作数据库的,最近工作中使用了一下,感觉确实方便很多,基本告别自己封装JDBC代码对数据库进行增删改...
Apache Commons DBUtils是一个Java库,它简化了与数据库交互的任务,是Java开发中常用的数据访问工具。这个压缩包“commons-dbutils-1.3.zip”包含的是DBUtils库的1.3版本。DBUtils库是Apache Commons项目的一部分,...
apache commons jar(commons所有的jar包,从官网下载提供给大家) 因为涉及jar太多,包括有src源代码,只需要3分,希望大家理解,我也是从官网花了很长时间才一个一个下完,需要的请自取。全部是zip文件,每个对应的...
commons-dbutils 是 Apache 组织提供的一个...主要讲解两个类(org.apache.commons.dbutils.DbUtils 和org.apache.commons.dbutils.QueryRunner)和一个接口(org.apache.commons.dbutils.ResultSethandler)。 ......
Apache Commons DBUtils是一个Java库,它为处理数据库连接提供了简单且健壮的工具。这个压缩包文件"commons-dbutils-1.6.rar"包含了DBUtils的1.6版本,这是一个非常受欢迎的开源项目,用于简化Java数据库编程。...
Apache Commons DBUtils是一个Java库,它为数据库操作提供了一些实用工具和抽象,简化了数据库编程。这个"commons-dbutils-1.2.rar"文件包含了Apache Commons DBUtils的1.2版本,这是一个历史悠久且广泛使用的开源...
### Apache Commons DbUtils工具包使用介绍 #### 一、简介 **Apache Commons DbUtils** 是一个用于简化 Java JDBC 操作的轻量级工具包。它通过封装 JDBC 的基础功能,帮助开发者减少冗余代码,提高代码的可读性...