zoukankan      html  css  js  c++  java
  • Dbutils简单使用

    Dbutils是apache基于jdbc封装的操作数据库的包,在保证性能的同时操作更加的简洁。

    有两个主要的类QueryRunner类和ResultSetHandler接口,QueryRunner主要用于数据库的操作 update方法用于增删改 query用于查询;

    QueryRunner类

      构造方法

        QueryRunner qr =new QueryRunner();    使用无参构造的时候,调用update方法和query方法时就需要使用带Connection 类型参数的重载形式 

        QueryRunner qr= new QueryRunner(DataSource dataSource);   使用无参构造的时候,调用update方法和query方法时就需要使用带Connection 类型参数的重载形式  

      常用方法

        int=qr.update(Connection con ,String sql ,Param)  数据库的增删改 

          参数一:连接池对象(这个在无参构造的时候使用)

          参数二:sql语句

          参数三:可变参数(就是sql占位符的值)

          返回值:int类型的 返回受影响的行数

    package db;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    import org.apache.commons.dbutils.QueryRunner;
    
    import java.sql.SQLException;
    
    public class TestDbutils {
        public static void main(String[] args) throws SQLException {
            ComboPooledDataSource dataSource=new ComboPooledDataSource();//不写取默认的配置
            QueryRunner qr=new QueryRunner(dataSource);
            String sql="update oak_test set uid=1 where uid=?;";
            int a =qr.update(sql,"123451");
        }
    
    }

        query(Connection con,String sql ,Param ...,ResultSetHandler)

          该方法用于出查询操作

          参数一:Connection 数据库连接对象, 使用带参构造时可以不用

          参数二:sql语句

          参数三:表示对结果集的处理方式 (ResultSetHandler接口)

          参数四:可变参数(就是sql占位符的值)

          ResultSetHandler接口用于数据库查询结果的整合

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

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

            BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。//重点

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

            MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。//重点

            MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List //重点

            ColumnListHandler:将结果集中某一列的数据存放到List中。

            KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List<Map>),再把这些map再存到一个map里,其key为指定的列。

            ScalarHandler:将结果集第一行的某一列放到某个对象中。//重点

    package db;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.*;
    
    import java.sql.SQLException;
    import java.util.List;
    import java.util.Map;
    
    public class TestDbutils {
        public static void main(String[] args) throws SQLException {
            ComboPooledDataSource dataSource=new ComboPooledDataSource();//不写取默认的配置
            QueryRunner qr=new QueryRunner(dataSource);
            String sql="select * from oak_test ;";
    //        TestDbutils.testArrayHandler(sql,qr);
    //        TestDbutils.testArrayListHandler(sql,qr);
    //        TestDbutils.testbeanHandler(sql,qr);
    //        TestDbutils.testbeanListHandler(sql,qr);
    //        TestDbutils.testMapHandler(sql,qr);
    //        TestDbutils.testMapListHandler(sql,qr);
            TestDbutils.testScalarHanddler(sql,qr);
    
        }
        //ArrayHandler将第一列的数据转化成一个对象数据[object1,object2,object3]
        public static void testArrayHandler (String sql,QueryRunner qr) throws SQLException{
            Object result[]=qr.query(sql,new ArrayHandler());
            //数组中存放 String类型的1 Integer类型的15和String类型的1111111
            for(Object o:result){
                System.out.println(o);
            }
        }
        //ArrayListHandler将结果的数据转化成多个对象数据[object1,object2,object3],在存放到List中
        public static void testArrayListHandler (String sql,QueryRunner qr) throws SQLException{
            List<Object[]> result=qr.query(sql,new ArrayListHandler());
            //先循环集合List得到一个数组 在循环数组中的每个对象的值
            for(Object[] list:result){
                for(Object o:list){
                    System.out.println(o);
    
                }
            }
    
        }
        //beanHandler和beanListHandler返回的值比较简单 所以这两种方法相对使用的多一些
        //beanHandler将结果集中的第一行数据封装到一个对应的JavaBean实例中 这里的JavaBean指根据数据库表创建的类的对象
        public static void testbeanHandler (String sql,QueryRunner qr) throws SQLException{
            //返回的是一个对象
            DbUser dbuser=(DbUser)qr.query(sql,new BeanHandler(DbUser.class));
            System.out.println(dbuser.getUid());
            System.out.println(dbuser.getLoginname());
            System.out.println(dbuser.getLoginpass());
    
        }
        //beanListHandler将结果集中每一行数据封装到一个对应的JavaBean实例中 在把所有的实例存放到list中
        public static void testbeanListHandler (String sql,QueryRunner qr) throws SQLException{
            //返回的是一个DbUser对象组成的集合
            List<DbUser> list=(List)qr.query(sql,new BeanListHandler(DbUser.class));
            for(DbUser user:list){
                System.out.println(user.getUid());
            }
        }
        //MapHandler将结果第一行封装到一个Map里 key是列名 value是对应的值
        public static void testMapHandler(String sql,QueryRunner qr) throws SQLException{
            Map result=qr.query(sql,new MapHandler());
            System.out.println(result);
        }
        //MapListHandler将结果每一行封装到一个Map里 key是列名 value是对应的值 在存放到List中
        public static void testMapListHandler(String sql,QueryRunner qr) throws SQLException{
            List result=qr.query(sql,new MapListHandler());
            System.out.println(result);
        }
        //将结果集第一行的某一列放到某个对象
        public static void testScalarHanddler(String sql,QueryRunner qr) throws SQLException{
            Object o=qr.query(sql,new ScalarHandler(2));
            System.out.println(o);
        }
    
    
    
    }

     

  • 相关阅读:
    【C/C++开发】TinyXml操作(含源码下载)
    【C/C++开发】TinyXml操作(含源码下载)
    【计算机视觉】目标检测中的指标衡量Recall与Precision
    【计算机视觉】目标检测中的指标衡量Recall与Precision
    【图像处理】关于掩模的作用
    【图像处理】关于掩模的作用
    【神经网络与深度学习】【计算机视觉】YOLO2
    【神经网络与深度学习】【计算机视觉】YOLO2
    【神经网络与深度学习】【计算机视觉】SSD
    【神经网络与深度学习】【计算机视觉】SSD
  • 原文地址:https://www.cnblogs.com/ysmdbk/p/11076075.html
Copyright © 2011-2022 走看看