开源框架——DBUtils

4 篇文章 0 订阅
1 篇文章 0 订阅

DBUtils 框架
1、概述:
DBUtils是java编程中的数据库操作实用工具,小巧简单实用。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
Dbutils三个核心功能介绍
 QueryRunner中提供对sql语句操作的API.
 ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
 DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

2、QueryRunner 核心类:
 QueryRunner(DataSource ds) ,提供数据源(连接池),DBUtils底层自动维护连接connection
 update(String sql, Object… params) ,执行更新数据 insert update delete
 query(String sql, ResultSetHandler rsh, Object… params) ,执行查询 select

3、ResultSetHandler结果集处理类
ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中
KeyedHandler 将结果集中每一条记录封装到Map

//更新update:
@Test
public void testUpdate() throws Exception{
    try {

        //1 核心类
        QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
        //2 sql
        String sql = "update category set cname=? where cid = ?";
        //3 参数
        Object[] params = {"家电","c006"};
        //4执行
        queryRunner.update(sql, params);

    } catch (Exception e) {
        throw new RuntimeException(e);
    }   
}


//查询单一字段 Query:
@Test
public void testFindById() throws Exception{

    try {

        //1 核心类
        QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
        //2 sql
        String sql = "select * from category where cid=?";
        //3 参数
        Object[] params = {"c003"};
        //4执行
        Category category = queryRunner.query(sql, new BeanHandler<Category>(Category.class), params);

        System.out.println(category);
    } catch (Exception e) {
        throw new RuntimeException(e);
    } 
}

//查询所有:
@Test
public void testFindAll() throws Exception{

    try {

        //1 核心类
        QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
        //2 sql
        String sql = "select * from category";
        //3 参数
        Object[] params = {};
        //4执行
        List<Category> allCategory = queryRunner.query(sql, new BeanListHandler<Category>(Category.class), params);

        for (Category category : allCategory) {
            System.out.println(category);
        }

    } catch (Exception e) {
        throw new RuntimeException(e);
    } 
}

// 查询总记录数:
@Test
public void testCount() throws Exception{

    try {

        //1 核心类
        QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
        //2 sql
        String sql = "select count(*) from category";
        //3 参数
        Object[] params = {};
        //4执行
        Long numLong = (Long) queryRunner.query(sql, new ScalarHandler(), params);

        int num = numLong.intValue();

        System.out.println(num);
    } catch (Exception e) {
        throw new RuntimeException(e);
    } 
}

DBUtils框架使用总结:、

  1. 加载JDBC驱动程序类,并用DriverManager来得到一个数据库连接conn。
  2. 实例化 QueryRunner,得到实例化对象qRunner。
  3. qRunner.update()方法,执行增改删的sql命令, qRunner.query()方法,得到结果集。
commons-dbutils包是Apache开源组织提供的用于操作数据库的工具包。简单来讲,这个工具包就是用来更加方便我们操作数据库的,最近工作中使用了一下,感觉确实方便很多,基本告别自己封装JDBC代码对数据库进行增删改查了。代码看着也很简洁。 例如: 增删改查使用的类:QueryRunner类+ResultSetHandler类,使用这俩类就可以解决掉。 QueryRunner类的query()方法:new QueryRunner().query(Connection conn, String sql, ResultSetHandler rsh) query方法后面参数中加一个Connection连接,是在获取不到数据源的情况下,也就是说,QueryRunner的实例化构造函数使用无参的那个,下面我的实现代码就是用的这种方法。 当然还有一种实例化:new QueryRunner(new Datasource()).query(String sql, ResultSetHandler rsh) query方法中的参数 ResultSetHandler 参数中加上ResultSetHandler接口的实现类参数(下面这些实现类),执行完SQL后,返回的数据就是已经封装好的我们想要的结果了。 ArrayHandler :将ResultSet中第一行的数据转化成对象数组 ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[] BeanHandler :将ResultSet中第一行的数据转化成Bean对象 BeanListHandler :将ResultSet中所有的数据转化成List ColumnListHandler :将ResultSet中某一列的数据存成List KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map,Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map MapListHandler :将ResultSet中所有的数据存成List<Map> ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值