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();

    }

 

你可能感兴趣的:(Apache ---- DBUilts框架源码)