首页 > 代码库 > DBUtils工具

DBUtils工具

DBUtils工具

简介

Apache旗下的产品。是对jdbc的简单封装。提供出通用的jdbc操作方法。简化开发者使用jdbc的成本。

 

常用的API说明

|- QueryRunner类: 主要进行jdbc的增删改查操作。

|-update(): 用于更新

|-query(): 用于查询

 

|- ResultSetHandler接口: 主要用于在查询操作中,封装结果集。ResultSet -> 对象

|-ArrayHandler类:把结果集的第一行记录封装成数组

|-ArrayListHandler类: 把结果集的每一行封装到对象数组中,每个对象数组放入List集合中。

|- BeanHandler类: 把结果集封装到一个javabean对象中

|-BeanListHandler类: 把结果集的每一行数据封装到一个javabean对象中,然后把javabean对象放入List集合中。

以上两个方法使用频率最高!!!

|- ScalarHandler类:  把结果集的第一行第一列的数据返回。通用用于聚合查询(例如,countmaxminavg

 

介绍完它的核心API,下面来演示一下它的使用步骤。

 

DBUtils的使用步骤

步骤一:导包

导入commons-dbutils-1.2.jar 

 

步骤二:代码中使用它

利用DBUtils进行增删改工作

 

 

    @Test    public void test1()    {        //1.创建QueryRunner         //方式一:用一个DataSoutce对象作参数        ComboPooledDataSource pool = new ComboPooledDataSource();        QueryRunner qr = new QueryRunner(pool);                try {            //执行SQL语句            qr.update("insert into students(id,name) values(?,?)",new Object[] {8,"JAX"});        } catch (SQLException e) {            e.printStackTrace();            throw new RuntimeException(e);        }        }

 

下面来看看方式二:

    @Test    public void test2()    {        //1.创建QueryRunner         //方式二:用无参的方法        ComboPooledDataSource pool = new ComboPooledDataSource();        QueryRunner qr = new QueryRunner();        Connection conn = null;                    try {            conn = pool.getConnection();                    //用指定的conn执行指定的SQL语句            qr.update(conn,"insert into students(id,name) values(85,‘JinX‘)");        } catch (SQLException e) {            e.printStackTrace();            throw new RuntimeException(e);        }finally{            if(conn!=null)            {                try {                    conn.close();//放回连接池                } catch (SQLException e) {                    e.printStackTrace();                }            }        }    }

利用DBUtils进行查询工作

DBUtils最大的用处还是在于查询后把结果封装~下面来体现一下把

 

1.ArrayHandler:把查询结果的第一行返回一个对象数组。

 

    @Test    public void test3()    {        //1.创建QueryRunner         ComboPooledDataSource pool = new ComboPooledDataSource();        QueryRunner qr = new QueryRunner(pool);                try {            //执行SQL语句,使用ArrayHandler            Object[] obj = (Object[]) qr.query("select * from students",new ArrayHandler());                        for(int i = 0; i<obj.length;i++)            {                System.out.println(obj[i]);            }                } catch (SQLException e) {            e.printStackTrace();            throw new RuntimeException(e);        }        }

 

2.ArrayListHandler:把查询的结果的每一行封装到一个数组中,然后把这些数组放到一个集合中返回。

 

@Test    public void test4()    {        //1.创建QueryRunner         ComboPooledDataSource pool = new ComboPooledDataSource();        QueryRunner qr = new QueryRunner(pool);                try {            //执行SQL语句,使用ArrayListHandler()            List<Object[]> list = (List<Object[]>)qr.query("select * from students", new ArrayListHandler());                        for(Object[] obj : list)            {                for(int i=0;i<obj.length;i++)                {                    System.out.println(obj[i] + "\t");                }            }                            } catch (SQLException e) {            e.printStackTrace();            throw new RuntimeException(e);        }        }

 

3.BeanHandler:把结果集的第一行记录返回一个javaBean对象

前提:结果集的字段名 和 javaBean的属性名保持一致。

 

    @Test    public void test5()    {        //1.创建QueryRunner         ComboPooledDataSource pool = new ComboPooledDataSource();        QueryRunner qr = new QueryRunner(pool);                try {            //执行SQL语句,使用BeanHandler            Students s = (Students) qr.query("select * from students",new BeanHandler(Students.class));            System.out.println(s);                    } catch (SQLException e) {            e.printStackTrace();            throw new RuntimeException(e);        }        }

 

4.BeanListHandler:把结果集的每一行封装成一个javaBean对象,然后把这些对象放入到一个List集合中返回。

前提:结果集的字段名 和 javaBean的属性名保持一致。

 

    @Test    public void test6()    {        //1.创建QueryRunner         ComboPooledDataSource pool = new ComboPooledDataSource();        QueryRunner qr = new QueryRunner(pool);                try {            //执行SQL语句,使用BeanListHandler            List<Students> list = (List<Students>)qr.query("select * from students",new BeanListHandler(Students.class));                        for(Students s : list)            {                System.out.println(s);            }                    } catch (SQLException e) {            e.printStackTrace();            throw new RuntimeException(e);        }        }

 

5.scalarHandler:返回结果集第一行第一列的字段值。 

常常被用于聚合查询

    @Test    public void test7()    {        //1.创建QueryRunner         ComboPooledDataSource pool = new ComboPooledDataSource();        QueryRunner qr = new QueryRunner(pool);                try {            //执行SQL语句,使用ArrayHandler            Object obj = (Object) qr.query("select count(*) from students",new ScalarHandler());                        System.out.println(obj);                    } catch (SQLException e) {            e.printStackTrace();            throw new RuntimeException(e);        }        }

6.自定义字段名转换handler

如果字段名 和 javaBean属性名,不一致,我们就要编写自己的一个handler,来实现封装时的字段名对应,下面就来演示一下如何编写自己的handler

 

    @Test    public void test8()    {        //1.创建QueryRunner         ComboPooledDataSource pool = new ComboPooledDataSource();        QueryRunner qr = new QueryRunner(pool);                try {            //执行SQL语句,使用BeanHandler            Students2 s = (Students2) qr.query("select * from students",new MyStudentsHandler());            System.out.println(s);                    } catch (SQLException e) {            e.printStackTrace();            throw new RuntimeException(e);        }        }    //手动封装结果集    class MyStudentsHandler implements ResultSetHandler    {        @Override        public Object handle(ResultSet rs) throws SQLException {            while(rs.next())            {                //创建javaBean对象                Students2 s = new Students2();                s.setId(rs.getInt("sid"));//                s.setName(rs.getString("sname"));                return s;            }            return null;        }            }

 

上述就是DBUtils这个工具的一些用法,主要是用来封装结果集的对象~

 

 

 

 

DBUtils工具