zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }

  • 相关阅读:
    Atitit sumdoc t5 final file list \sumdoc t5 final\sumdoc t511 \sumdoc t5 final\sumdoc t511.zip \sum
    上课流程法如何上好第一节课(1) 目录 1. 目录 1 1.1. 销售自己 1 1.2. 销售课程 1 1.3. 学习方法 1 1.4. 制定规章 2 2. 销售自己自我介绍 2 2.1.
    Atitit 重复文件清理工具 按照文件名 目录 1. 原理, 1 1.1. If base filex exist dele other files 1 1.2. Get getStartIdex
    Atitit sumdoc index 2019 v6 t56 .docx Atitit sumdoc index s99 目录 1. Zip ver 1 1.1. C:\Users\Adminis
    Atitit lucence es solr的各种query 与sql运算符的对比 目录 1.1. 等于运算 TermQuery 1 1.2. 范围运算 1 1.3. 大小运算 1 1.4. Wi
    Atitit 程序设计概论 艾提拉著作 目录 1. 界面ui设计 1 2. 编程语言部分 1 3. 面向对象的程序设计 1 4. 算法章节 数据结构 1 5. 第21章 标准库 2 5.1. 文件i
    Atitit 命令行执行sql 跨语言 目录 1.1. 无需输入密码,那就不要p参数即可 1 1.2. 4.使用mysql命令执行 1 1.3. 5.mysql命令执行sql,并将查询结果保存到
    Atitit java播放 wav MIXER 混响器编程 目录 1.1. MIXER 混响器编程 1 1.2. 得到系统中一共有多少个混音器设备: 1 1.3. 接口摘要 1 1.4. 调节音量
    Atitit object 和class的理解 目录 1.1. 发现很多Object的方法都是相同的,他们被重复地放在一个个对象当中,太浪费了。 1 1.2. 那我们怎么把这些Object给创建起来
    Atitit 数据库的历史与未来 目录 1.1. 两个对于数据库强需求的行业。电信 金融 1 1.2. 艾提拉分析 对数据库强需求行业金融 1 2. 数据库历史 2 2.1. ,上个世纪50,6
  • 原文地址:https://www.cnblogs.com/KiligYou/p/11018983.html
Copyright © 2011-2022 走看看