DBUtils工具

简介

是Apache旗下的产品。是对jdbc的简单封装。提供出通用的jdbc操作方法。简化开发者使用jdbc的成本。

常用的API说明

|- QueryRunner类: 主要进行jdbc的增删改查操作。

|-update(): 用于更新

|-query(): 用于查询

|- ResultSetHandler接口: 主要用于在查询操作中,封装结果集。ResultSet -> 对象

|-ArrayHandler类:把结果集的第一行记录封装成数组

|-ArrayListHandler类: 把结果集的每一行封装到对象数组中,每个对象数组放入List集合中。

|- BeanHandler类: 把结果集封装到一个javabean对象中

|-BeanListHandler类: 把结果集的每一行数据封装到一个javabean对象中,然后把javabean对象放入List集合中。

以上两个方法使用频率最高!!!

|- ScalarHandler类:  把结果集的第一行第一列的数据返回。通用用于聚合查询(例如,count,max,min,avg)

介绍完它的核心API,下面来演示一下它的使用步骤。

DBUtils的使用步骤

步骤一:导包

导入commons-dbutils-1.2.jar 包

步骤二:代码中使用它

利用DBUtils进行增删改工作

    @Test
public void test1()
{
//1.创建QueryRunner
//方式一:用一个DataSoutce对象作参数
ComboPooledDataSource pool = new ComboPooledDataSource();
QueryRunner qr = new QueryRunner(pool); try {
//执行SQL语句
qr.update("insert into students(id,name) values(?,?)",new Object[] {8,"JAX"});
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

下面来看看方式二:

    @Test
public void test2()
{
//1.创建QueryRunner
//方式二:用无参的方法
ComboPooledDataSource pool = new ComboPooledDataSource();
QueryRunner qr = new QueryRunner();
Connection conn = null; try {
conn = pool.getConnection();
//用指定的conn执行指定的SQL语句
qr.update(conn,"insert into students(id,name) values(85,'JinX')");
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}finally{
if(conn!=null)
{
try {
conn.close();//放回连接池
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

利用DBUtils进行查询工作

DBUtils最大的用处还是在于查询后把结果封装~下面来体现一下把

1.ArrayHandler:把查询结果的第一行返回一个对象数组。

    @Test
public void test3()
{
//1.创建QueryRunner
ComboPooledDataSource pool = new ComboPooledDataSource();
QueryRunner qr = new QueryRunner(pool); try {
//执行SQL语句,使用ArrayHandler
Object[] obj = (Object[]) qr.query("select * from students",new ArrayHandler()); for(int i = 0; i<obj.length;i++)
{
System.out.println(obj[i]);
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

2.ArrayListHandler:把查询的结果的每一行封装到一个数组中,然后把这些数组放到一个集合中返回。

@Test
public void test4()
{
//1.创建QueryRunner
ComboPooledDataSource pool = new ComboPooledDataSource();
QueryRunner qr = new QueryRunner(pool); try {
//执行SQL语句,使用ArrayListHandler()
List<Object[]> list = (List<Object[]>)qr.query("select * from students", new ArrayListHandler()); for(Object[] obj : list)
{
for(int i=0;i<obj.length;i++)
{
System.out.println(obj[i] + "\t");
}
} } catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

3.BeanHandler:把结果集的第一行记录返回一个javaBean对象

前提:结果集的字段名 和 javaBean的属性名保持一致。

    @Test
public void test5()
{
//1.创建QueryRunner
ComboPooledDataSource pool = new ComboPooledDataSource();
QueryRunner qr = new QueryRunner(pool); try {
//执行SQL语句,使用BeanHandler
Students s = (Students) qr.query("select * from students",new BeanHandler(Students.class)); System.out.println(s); } catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

4.BeanListHandler:把结果集的每一行封装成一个javaBean对象,然后把这些对象放入到一个List集合中返回。

前提:结果集的字段名 和 javaBean的属性名保持一致。

    @Test
public void test6()
{
//1.创建QueryRunner
ComboPooledDataSource pool = new ComboPooledDataSource();
QueryRunner qr = new QueryRunner(pool); try {
//执行SQL语句,使用BeanListHandler
List<Students> list = (List<Students>)qr.query("select * from students",new BeanListHandler(Students.class)); for(Students s : list)
{
System.out.println(s);
} } catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

5.scalarHandler:返回结果集第一行第一列的字段值。

常常被用于聚合查询。

    @Test
public void test7()
{
//1.创建QueryRunner
ComboPooledDataSource pool = new ComboPooledDataSource();
QueryRunner qr = new QueryRunner(pool); try {
//执行SQL语句,使用ArrayHandler
Object obj = (Object) qr.query("select count(*) from students",new ScalarHandler()); System.out.println(obj); } catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

6.自定义字段名转换handler

如果字段名 和 javaBean属性名,不一致,我们就要编写自己的一个handler,来实现封装时的字段名对应,下面就来演示一下如何编写自己的handler

    @Test
public void test8()
{
//1.创建QueryRunner
ComboPooledDataSource pool = new ComboPooledDataSource();
QueryRunner qr = new QueryRunner(pool); try {
//执行SQL语句,使用BeanHandler
Students2 s = (Students2) qr.query("select * from students",new MyStudentsHandler()); System.out.println(s); } catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
} //手动封装结果集
class MyStudentsHandler implements ResultSetHandler
{ @Override
public Object handle(ResultSet rs) throws SQLException {
while(rs.next())
{
//创建javaBean对象
Students2 s = new Students2();
s.setId(rs.getInt("sid"));//
s.setName(rs.getString("sname"));
return s;
}
return null;
}
}

上述就是DBUtils这个工具的一些用法,主要是用来封装结果集的对象~

DBUtils工具的更多相关文章

  1. Java学习之DBUtils工具的学习

    简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影 ...

  2. 【知了堂学习心得】浅谈c3p0连接池和dbutils工具类的使用

    1. C3P0概述 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. 2. C3P ...

  3. 模拟实现 DBUtils 工具 , 技术原理浅析

    申明:本文采用自己 C3P0 连接池工具进行测试 自定义的 JDBCUtils 可以获取 Connection: package com.test.utils; import java.sql.Con ...

  4. Java学习笔记49(DBUtils工具类二)

    上一篇文章是我们自己模拟的DBUtils工具类,其实有开发好的工具类 这里使用commons-dbutils-1.6.jar 事务的简单介绍: 在数据库中应用事务处理案例:转账案例 张三和李四都有有自 ...

  5. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  6. 30_java之DButils工具类

    01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数据库操作实用工具,小巧简单实用. * DBUtils ...

  7. DBUtils工具类的使用

    DBUtils工具类1.DBUtils工具类,由apache组织提供的工具类,对JDBC做了一些简单封装. 做了查询的封装,把查询的结果封装到List集合 Map集合 JavaBean对象中 做了增删 ...

  8. DBUtils工具类和DBCP连接池

    今日内容介绍 1.DBUtils2.处理结果集的八种方式3.连接池4.连接池的用法1 PrepareStatement接口预编译SQL语句 1.1 预处理对象 * 使用PreparedStatemen ...

  9. java使用dbutils工具类实现小程序 管家婆记账软件

    1.所需创建的包和 jar包 2.创建表结构  #生成一些表数据 ,,'交通银行','2016-03-02','家庭聚餐'); ,,'现金','2016-03-15','开工资了'); ,,'现金', ...

随机推荐

  1. OpenStack 存储服务 Cinder存储节点部署NFS(十七)

    Cinder存储节点部署 1.安装软件包 yum install -y nfs-utils rpcbind 提示:早期版本安装portmap nfs-utils :包括基本的NFS命令与监控程序 rp ...

  2. Java基础-SSM之Spring MVC入门篇

    Java基础-SSM之Spring MVC入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spring MVC简介 1>.什么是Spring MVC 答:Sprin ...

  3. 函数和常用模块【day04】:内置函数分类总结(十一)

    重点掌握 字符串格式化format() 字符串格式化百分号 判断 转换 数据类型 帮助信息 map和filter()函数 局部变量全局变量 计算内置函数 常用内置函数(其他) 后续会讲 不常用

  4. spring cloud微服务架构 服务提供者和服务消费者

    服务提供者和服务消费者 下面这张表格,简单描述了服务提供者/消费者是什么:   | 名词 | 概念 | | ----- | ----------------------- | | 服务提供者 | 服务 ...

  5. yearProgress.vue

    <template> <div class="progressbar"> <el-progress :text-inside="true&q ...

  6. 前端 ajax 改写登录界面

    SSM 整合项目开发到一个阶段,想慢慢地把前台框架等技术引入进来 突然碰到一个困惑好久的问题: ajax 替换原本 form 表单 post 提交登录: 一直 404 错误,心塞.... 最后发现原来 ...

  7. Zookeeper笔记之命令行操作

    $ZOOKEEPER_HOME/bin下的zkCli.sh进入命令行界面,使用help可查看支持的所有命令: 一.节点相关操作 create [-s] [-e] path data acl creat ...

  8. 以python代码解释fork系统调用

    import os print('Process (%s) start...' % os.getpid()) # Only works on Unix/Linux/Mac: pid = os.fork ...

  9. Python内置模块与标准库

    Python内置模块就是标准库(模块)吗?或者说Python的自带string模块是内置模块吗? 答案是:string不是内置模块,它是标准库.也就是说Python内置模块和标准库并不是同一种东西. ...

  10. 【Python】CVE-2017-10271批量自查POC(Weblogic RCE)

    1.说明 看到大家对weblogic漏洞这么热衷,于是也看看这个漏洞的测试方式. 找了几个安全研究员的博客分析,经过几天的摸索大体清楚漏洞由XMLDecoder的反序列化产生. 漏洞最早4月份被发现, ...