狗凡

导航

MySQL数据库 DBUtils工具包

使用JDBC技术是一件繁琐的事情,为了使数据库更加高效,有一种简化jdbc技术的操作--DBUtils。DbUtils(org.apache.commons.dbutils.DbUtils)是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。DbUtils类主要负责装载驱动、关闭连接的常规工作。
 
   //QreryRunner类(org.apache.commons.dbutils.QueryRunner) 是Dbutils的核心类之一,它显著的简化了SQL查询,并与ResultSetHandler协同工作将使编码量大为减少。
 
使用步骤
          1  创建QueryRuner 对象
          2  调用QueryRuner 对象的方法  增删改update 查query
          3  处理结果
 
 
//ResultSetHandler接口(org.apache.commons.dbutils.ResultSethandler)执行处理一个结果集对象(用于select操作后),将数据转变并处理为任何一种形式,供其他应用使用。实现类如下:
 
 
  • BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
 
  • BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。//重点
 
  • ColumnListHandler:将结果集中某一列的数据存放到List中。
 
  • ScalarHandler:将结果集第一行的某一列放到某个对象中。//重点
 
package cn.kgc.dbutils;
 
import C3P0xmlUtils.C3P0xmlUtils;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;
 
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
 
/**
* apache公司的commons组件
*  QueryRunner类中提供了SQL语句操作的api 增删改 查
*  ResultSetHandler接口 用于select操作后 接收查询的结果
*  DBUtils工具类 关闭资源 事务的处理方法 释放资源
*  QueryRunner类使用步骤
*  1.创建QueryRunner对象
*  2.调用QueryRunner对象的方法 增删改update 查query
*  3.处理结果
*/
public class Demo01Dbutils {
    //使用DBUtils工具包对数据库进行添加数据
    @Test
    public void testInsert() throws SQLException {
        //创建    QueryRunner对象
        QueryRunner qr = new QueryRunner();
        //通过C3P0xmlUtils工具类获得连接对象 Connection
        Connection conn = C3P0xmlUtils.getConnection();
        String sql="insert into product(pid,pname,price,category_id,flag)values(?,?,?,?,?)";
        //调用QueryRunner对象的方法 update
        int row = qr.update(conn, sql, 17, "奥利奥", 6.9, "c003", "否");
        //处理结果
        System.out.println(row+"行发生改变");
        DbUtils.closeQuietly(conn);
    }
    //使用DBUtils工具包对数据库进行修改数据
    @Test
    public void testUpdate() throws SQLException {
        //创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
        //调用QueryRunner对象的update方法
        int row = qr.update("update product set pname =?,price=? where pid=?", "巧克力", 9.9, 17);
        //处理结果
        System.out.println(row);
    }
    //使用DBUtils工具包对数据库 删除一条记录
    @Test
    public void testDelete() throws SQLException {
        //创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
        //调用QueryRunner对象的update方法
        int row = qr.update("delete from prouct where pid in(?,?)", 16, 17);
        //处理结果
        System.out.println(row);
    }
    /**
     * 使用DBUtils工具包对数据库的表进行查询 使用结果集BeanHandler
     * 使用方式:把查询结果第一行数据取出来 存储到javabean对象中返回
     * 构造方法
     *  BeanHandler(class<T> type)传递javabean的class文件对象 Product.class
     */
    @Test
    public void testBeanHandler() throws SQLException {
        //创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
        //调用QueryRunner对象的方法 query
        Product p = qr.query("select * from product", new BeanHandler<>(Product.class));
        //处理结果
        System.out.println(p);
    }
    /**
     * 使用DBUtils工具包对数据库的表进行查询 使用结果集 BeanListHandler
     * 使用方式:把查询的多行结果存储到多个javabean中--→List集合
     */
    @Test
    public void testBeanListHandler() throws SQLException {
        //创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
        //调用QueryRunner对象的方法 query
        List<Product> list = qr.query("select * from product", new BeanListHandler<>(Product.class));
        //处理结果
        for (Product l:list){
            System.out.println(l);
        }
    }
    /**
     * 使用DBUtils工具包对数据库的表进行查询 使用结果集ScalarHandler
     * 使用方式:用于接收SQL语句是单一返回的情况
     *      1.聚合函数 sum avg max min count
     *      2.获得某一行的某一字段的值
     */
    @Test
    public void testScalarHandler() throws SQLException {
        //创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
        //调用QueryRunner对象的方法 query
//        Object o = qr.query("select count(*) from product", new ScalarHandler());
        Object o = qr.query("select pname from product where pid=?", new ScalarHandler(), 8);
        //处理结果
        System.out.println(o);
    }
    /**
     * 使用DBUtils工具包对数据库的表进行查询 使用结果集ColumnListHandler
     * 用于查询指定的列 数据存储到List集合
     */
    @Test
    public void testColumnListHandler() throws SQLException {
        //创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
        //调用QueryRunner对象的方法 query
        List<Object> list = qr.query("select pid,pname from product", new ColumnListHandler("pid"));
        //处理结果
        for (Object l:list){
            System.out.println(l);
        }
    }
}

posted on 2019-06-13 19:57  狗凡  阅读(215)  评论(0编辑  收藏  举报