• 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);
            }
        }
    }

  • 相关阅读:
    linux下简单线程池实现
    mongodb日志文件切换
    SQL Server中如何统计数据库中所有用户表所占空间大小?
    Windows 2008 R2 + IIS7.5客户端证书认证问题?
    mongodb Replica Sets +Sharding高可用集群搭建(含认证)
    读书笔记linux vfs
    SQL Server 常用性能分析语句
    CentOS6.2下fastDFS的完整安装和配置步骤
    改进jquery.tablesorter.js 支持中文表格排序
    Sage CRM升级注意事项三
  • 原文地址:https://www.cnblogs.com/KiligYou/p/11018983.html
Copyright © 2020-2023  润新知