DBUtils使用方法

1. 概述

DBUtils 是java中数据库操作的使用工具 DBUtils封装了JDBC操作 简化了JDBC操作 可以少些代码

2.三个核心功能

QueryRunner 中提供了sql语句操作的API

ResultSetHandler 接口 用于select 操作后 怎样封装结果集

Dbutils 工具类 关闭资源 事物的处理方法

准备数据 product表

QueryRunner—》 newQueryRunner(DataSource);

update(String sql, Object …prams) DML增删改

query(String sql,ResultSetHandler,Object …prams));

package cn.demo02dbuntil;


import C3P0Untils1.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 javax.jws.soap.SOAPBinding;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/*
 apache公司的commons组件 ---》jdbc6部---》3步(jdbc)
 *  QueryRunner 中提供了sql语句操作的API   增删   改查
 *      update  query

   ResultSetHandler 接口  用于select 操作后  接受查询的结果集

    Dbutils  工具类   关闭资源 事物的处理方法  释放资源
       使用步骤
          1  创建QueryRuner 对象
              QueryRunner 中提供了sql语句操作的API
          2 调用QueryRuner 对象的方法  update query
          3  处理结果
 */
public class Dem01Dbuntils {
//    使用Dbutils工具包对数据库进行添加数据
    @Test
    public void testInsert() throws SQLException {
//        1  创建QueryRuner 对象
        QueryRunner qr = new QueryRunner();
//        2 调用QueryRuner 对象的方法  update query
        Connection conn = C3P0xmlUtils.getCollection();
        String sql="insert into users values (?,?,?)";
        int row = qr.update(conn, sql, null, "王六", "1111");
//        3  处理结果
        System.out.println(row+"行数据发生改变");
        DbUtils.close(conn);
    }

//    使用Dbutils工具包对数据库进行修改
   @Test
    public void testUpdate() throws SQLException {
        // 1 创建QueryRunner 对象
       QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDatesource());
       //  2 调用QueryRuner 对象的方法  update query
       int i = qr.update("UPDATE users SET pname=?,pasword=? WHERE cid=?;", "刘德华", "11111",5);
       //3. 处理结果
       System.out.println(i+"行数据发生改变");
   }

    //    使用Dbutils工具包对数据库删除一条数据
    @Test
    public void testDelete() throws SQLException {
        //1.创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDatesource());
        //2 调用QueryRunner 对象 update query
        int i = qr.update("delete from users where cid in(?,?)", 4,5);
        //3  处理结果
        System.out.println(i+"行数据删除成功");

    }


    //    使用Dbutils工具包对数据库进行查询 结果集为 BeanHandler
    /*
    使用方法:
    把查询结果第一行数据取出来 存储到javabean对象中返回
     构造方法
   BeanHandler(Class<T> type) 传递javabean的class文件对象   Product.class
     */
    @Test
    public void testBeanHandler() throws SQLException {
        //1.创建QueryRunner 对象
        QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDatesource());
        //调用QueryRunner 对象的方法 update query
        //另建一个类 类中定义数据库中相同列明的变量和数据类型  对所有定义的变量 重写 获取set get方法
        List<Users> us = qr.query("select * from users", new BeanListHandler<>(Users.class));
        //3. 处理结果
        for (Users a:us){
            System.out.println(a);
        }
    }
//控制台查询结果如下:
//Users{cid=1, pname='张三', pasword='1234'}
//Users{cid=2, pname='lisi', pasword='1234'}
//Users{cid=6, pname='爱', pasword='111'}
//Users{cid=7, pname='李22', pasword='l123'}
//Users{cid=8, pname='王六', pasword='1111'}

     /*
   使用Dbutils工具包对数据库的表进行查询   使用结果集ScanlarHandler  用于接受slq语句是单一返回的情况
     使用方式:
     1 聚合函数   sum    avg  count  max min
     2 获得某一行的某一字段的值
     select pname from product where pid = ?
   */

     @Test
    public void testScanlarHnadler() throws SQLException {
         //1..创建 QueryRunner对象
         QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDatesource());
         //      2 调用QueryRuner 对象的方法  update query
         Object o = qr.query("select count(*) from users", new ScalarHandler());
         //3 处理结果
         System.out.println(o);
     }

    //   使用Dbutils工具包对数据库的表进行查询   使用结果集ColumnListHandler
    //用于查询指定的列  数据储存到List集合

    @Test
    public void testColumnListHandler() throws SQLException {
        //      1  创建QueryRuner 对象
        QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDatesource());
        // 2 调用QueryRuner 对象的方法  update query
        List<Object> list = qr.query("select cid,pname from users", new ColumnListHandler("pname"));
        //3  处理结果
        for (Object ob:list){
            System.out.println(ob);
        }
    }

}

猜你喜欢

转载自blog.csdn.net/qq_45112637/article/details/91894759