Apache ---- DBUilts框架源码

Apache ---- DBUilts框架源码

一 简介

Commons-dbutils是Apache组织提供了一个开源jdbc工具类库,它是读jsbc’的简单封装,学习成本极低,并且使用dbutils能极大的简化jdbc编码的工作量同时也不会影响程序的性能

API的介绍

Org.apache.connons.dbutils.QueryRunneer ---相当于DBManager

Org.apache.connons.dbutils.ResultSetHandler

工具类:

Org.apache.connons.dbutils.DbUtils

二 类和接口的介绍

1.DbUtils类的介绍

(1)dbUtils提供了如关闭连接,装在jdbc驱动程序等常规工作的工具类,里面的方法都是静态的。

(2)public static void close(…) throws java.sql.SQLException: DbUtils类提供了三个重载的关闭方法。这些方法检查所提供的参数是不是NULL,如果 不是的话,它们就关闭Connection、Statement和ResultSet。

(3)public static void closeQuietly(…): 这一类方法不仅能在Connection、Statement和ResultSet为NULL情况下避免关闭,还能隐藏一些在程序中抛出的SQLEeception。

(4)public static void commitAndCloseQuietly(Connection conn): 用来提交连接,然后关闭连接,并且在关闭连接时不抛出SQL异常。

(5)public static boolean loadDriver(java.lang.

String driverClassName):这一方装载并注册JDBC驱动程序,如果成功就返回true。使用该方法,你不需要捕捉这个异常ClassNotFoundException。

2.QueryRunner类 --- 核心类

(1)该类简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。

(2)QueryRunner类提供了两个构造方法:

• 默认的构造方法

• 需要一个 javax.sql.DataSource 来作参数的构造方法。

3.ResultSetHandler接口

(1)该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。

(2)ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql.ResultSet .rs)。

4.ResultSetHandler 接口的实现类

(1)ArrayHandler:把结果集中的第一行数据转成对象数组。

(2)ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。

(3)BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。

(4)BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。

三 实例应用

1.创建

public class UserDaoImpl {

// 插入操作

public void insert() {

// 得到数据库连接池对象

QueryRunner runner = new QueryRunner(DBManager_c3p0.getDataSource());

String sql = "insert into users(name,password) values('liop','8988')";

try {

runner.update(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 删除操作

public void delete() {

QueryRunner runner = new QueryRunner(DBManager_c3p0.getDataSource());

String sql = "delete from users where id=1";

try {

runner.update(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 更新操作

public void update() {

QueryRunner runner = new QueryRunner(DBManager_c3p0.getDataSource());

String sql = "update users set name='老王',password=222 where id=3";

try {

runner.update(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 通过Id查询操作

public void findById() {

QueryRunner runner = new QueryRunner(DBManager_c3p0.getDataSource());

String sql = "select * from users where id=3";

BeanHandler rsh = new BeanHandler(User.class);

try {

User user = runner.query(sql, rsh);

System.out.println(user.toString());

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 查询所有

public void findAll() {

QueryRunner runner = new QueryRunner(DBManager_c3p0.getDataSource());

String sql = "select * from users";

BeanListHandler rsh = new BeanListHandler(User.class);

try {

List<User> entities = runner.query(sql, rsh);

System.out.println(entities.size());

for (User entity : entities) {

System.out.println(entity.toString());

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 批处理

public void bath() {

QueryRunner runner = new QueryRunner(DBManager_c3p0.getDataSource());

String sql = "insert into users(name,password) values(?,?)";

Object[][] params = { { "老李", "111" }, { "qqq", "222" },

{ "www", "333" }, { "eee", "444" } };

try {

runner.batch(sql, params);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// ArrayHandler的使用

public void testArrayHandler() {

QueryRunner runner = new QueryRunner(DBManager_c3p0.getDataSource());

String sql = "select * from users where id=5";

ArrayHandler rsh = new ArrayHandler();

try {

Object[] array = runner.query(sql, rsh);

System.out.println(Arrays.asList(array));

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// ArrayListHandler的使用

public void testArrayListHandler() {

QueryRunner runner = new QueryRunner(DBManager_c3p0.getDataSource());

String sql = "select * from users";

ArrayListHandler rsh = new ArrayListHandler();

try {

List<Object[]> array = runner.query(sql, rsh);

for (int i = 1; i < array.size(); i++) {

System.out.println(Arrays.asList(array.get(i)));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

2.测试

public static void main(String[] args) {

new UserDaoImpl().insert();

new UserDaoImpl().delete();

new UserDaoImpl().update();

new UserDaoImpl().findById();

new UserDaoImpl().findAll();

// 批处理

new UserDaoImpl().bath();

// 数组使用

new UserDaoImpl().testArrayHandler();

//数组

//new UserDaoImpl().testArrayListHandler();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值