• 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] + "	");
                    }
                }
                        
            } 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这个工具的一些用法,主要是用来封装结果集的对象~

     

     

     

  • 相关阅读:
    [JAVA] 冻结Excel的第一行或第一列
    [SoapUI] 比较两个不同环境下的XML Response, 从外部文件读取允许的偏差值,输出结果到文本文件
    [Study] 通过游戏学编程的网站
    [SoapUI] SoapUI+Groovy中"org.apache.xmlbeans.XmlException: error:
    [SoapUI] 通过Groovy写文本文件
    [SoapUI] context.expand 和 groovyUtils.getXmlHolder 有什么不一样
    Codeforces Round #355 (Div. 2) C 预处理
    Codeforces Round #355 (Div. 2) B
    Codeforces Round #355 (Div. 2) A
    Codeforces Round #324 (Div. 2) D
  • 原文地址:https://www.cnblogs.com/vmax-tam/p/4161936.html
Copyright © 2020-2023  润新知