zoukankan      html  css  js  c++  java
  • dbutils基本使用

    dbutils的查询,主要用到的是query方法,增加,修改和删除都是update方法,update方法就不讲了

    只要创建ResultSetHandler接口不同的实现类对象就可以得到想要的查询结果,该接口的实现类有

    接下来讲解一些经常用到的:

    下面的代码都是要抛出异常的,为了看起来简洁,我在这里把异常去掉了

    ArrayHandler类:把结果集的'第一行'记录封装成数组,
      测试代码:

    QueryRunner qr = new QueryRunner(dataSource);
        String sql = "select * from user";
        Object[] objArr = qr.query(sql, new ArrayHandler());
    }
    View Code


    ArrayListHandler类:把结果集的每一行封装到一个数组中,然后把这些数组放到一个集合中返回
      测试代码:

    QueryRunner qr = new QueryRunner(dataSource);
        String sql = "select * from user";
        List<Object[]> list = qr.query(sql, new ArrayListHandler());
    }
    View Code


    BeanHandler类:把结果集的'第一行'记录作为一个javaBean对象返回(前提:结果集的字段名(可以用取别名) 和 javaBean的属性名保持一致)
      测试代码:

    QueryRunner qr = new QueryRunner(dataSource);
    String sql = "select * from user";
    User user = qr.query(sql, new BeanHandler<User>(User.class));
    View Code


    BeanListHandler类:把结果集的每一行封装成一个javaBean对象,然后把这些对象放入到一个List集合中返回
      测试代码:

    QueryRunner qr = new QueryRunner();
    String sql = "select * from user";
    List<User> userList = qr.query(conn, sql, new BeanListHandler<User>(User.class));
    View Code


    ScalarHandler类:返回'结果集'中第一行的某个值, 具体视构造方法的参数而定, 返回值类型视表中字段的类型而定
    有3个构造方法, 用于聚合查询比较好
    new ScalarHandler(); 返回结果集中第一行第一列的值
    new ScalarHandler(int columnIndex); 返回结果集中第一行第columnIndex列的值(列从1开始计算)
    new ScalarHandler(String columnName); 返回结果集中第一行名字为columnName的值
      测试代码:

    QueryRunner qr = new QueryRunner();
    String sql = "select id, username, hobby as hob from user";
    
    Integer obj1 = qr.query(conn, sql, new ScalarHandler<Integer>()); //结果集中第一行第一列的值
    String obj2 = qr.query(conn, sql, new ScalarHandler<String>(2)); //结果集中第一行第2列的值
    String obj3 = qr.query(conn, sql, new ScalarHandler<String>("hob")) //结果集中第一行名字为hob
    View Code


    ColumnListHandler类:将结果集中某一列的数据存放到List中, 与上面ScalarHandler类似的有3个构造方法
      测试代码:

    QueryRunner qr = new QueryRunner();
    String sql = "select * from user";
    
    // List<Integer> idList = qr.query(conn, sql, new ColumnListHandler<Integer>());
    // List<String> idList = qr.query(conn, sql, new ColumnListHandler<String>("hobby"));
    List<String> list = qr.query(conn, sql, new ColumnListHandler<String>(4));
    View Code


    MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值
      测试代码:

    QueryRunner qr = new QueryRunner();
    String sql = "select * from user";
    Map<String, Object> map = qr.query(conn, sql, new MapHandler());
    View Code


    MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
      测试代码:

    QueryRunner qr = new QueryRunner();
    String sql = "select * from user";
    List<Map<String, Object>> listMap = qr.query(conn, sql, new MapListHandler());
    View Code

    我这里都是举例的不带参数的,如果有参数,在sql中参数用?表示,然后使用带参数的query方法按顺序依次把参数传入即可

    有关连接数据库的,请参考我另一篇随笔:c3p0连接数据库的3种方式

    唯一激励你前行的是你的心
  • 相关阅读:
    C#中的委托,匿名方法和Lambda表达式
    Java 8 Lambda表达式探险
    Lambda表达式有何用处?如何使用?
    有参数的程序,可以被调用
    怎样用VB编写.DLL动态链接库文件
    Oracle 存储过程包
    EB(存储单位)
    排序之快速排序(上)
    排序之冒泡排序
    排序之堆排序
  • 原文地址:https://www.cnblogs.com/pdzbokey/p/6086189.html
Copyright © 2011-2022 走看看