Fork me on GitHub

dbUtils 工具类介绍

  1. 导包: commons-dbutils.jar
  2. 核心类: QueryRunner
  3. 常用方法:
// 执行增,删,改语句, 返回影响的行数
    int update(String sql,Object... params);

// 执行增, 删, 改语句, 但是需要调用者提供 Connection 对象, 支持事务.
    int update(Connection ,String sql, Object... params);

// 执行查询方法
// 返回值类型为 T, 因为 ResultSetHandler 中的 handle 方法会把 ResultSet 结果集转换为 T 类型
    T query(String sql, ResultSetHandler rsh, Object...params);

// 执行查询方法, 但是需要调用者提供 Connection 对象, 支持事务
    T query(Connection con, String sql, ResultSetHandler rsh, Object... params);

4. ResultSetHandler 接口的实现类

  • 单行结果: BeanHandler(), 构造器需要一个 Class 类型的参数, 用来把一行结果转换成指定类型的 javaBean 对象;
  • 多行结果: BeanListHandler(), 构造器需要一个 Class 类型的参数, 用来把一行结果转换成一个 javaBean,
    若是多行结果, 就转换成 List 对象, 即多个 javaBean;
  • 单行结果: MapHandler(), 把一行结果转换成 Map;
  • 多行结果: MapListHandler(), 把一行记录转换成一个 Map, 若是多行, 就是多个 Map, 即 List;
  • 单行单列: ScalarHandler(), 结果集是单行单列的, 返回一个 Object.
    通常用于 SELECT count(*) FROM t_stu;
单行记录

Map 集合

{sid:1001,sname:zhangsan,age:22,gender:male}

// 示例

    // BeanHandler()  和 MapHandler()
    public void fun() throws Exception{
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());

        String sql = "SELECT * FROM t_stu WHERE sid=?";

        Object[] params = {1001};

        // BeanHandler()
        Stu stu = qr.query(sql,new BeanHandler<Stu>(stu.class),params);

        System.out.println(stu);

        // MapHandler()
        Map map = qr.query(sql,new MapHandler(),params);
        System.out.println(map);
    }

    // BeanListHandler() 和 MapListHandler()
    public void fun1() throws SQLException{
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());

        String sql = "SELECT * FROM t_stu";

        // BeanListHandler()
        List<Stu> stuList = qr.query(sql, new BeanListHandler<Stu>(Stu.class));
        System.out.println(stuList);

        // MapListHandler()
        List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler());
        Sytem.out.println(mapList);
    }

    // ScalarHandler()
    public void fun2() throws SQLException{
        QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());

        String sql = "SELECT COUNT(*) FROM t_stu";

        // 此处 obj 类型可能为 Integer, Long, BigInteger
        // 但是这三种类型有共同的父类 Number
        Number obj = (Number)qr.query(sql,new ScalarHandler());

        System.out.println(obj);
    }

参考资料:

posted @ 2017-10-04 16:23  小a的软件思考  阅读(1265)  评论(0编辑  收藏  举报