DBUtils 是对JDBC简单封装的开源工具类

详细介绍地址:  https://baike.baidu.com/item/Dbutils/10655914?fr=aladdin

在使用DBUtils工具类之前需要DBUtil  jar包   登录官方网址    下载最新jar包和API  也可以直接点击    下载

解压下载的压缩包

主要用到 QueryRuner    ResultSetHander  这些类

ResultSetHander 接口 有许多实现类

AbstractKeyedHandlerAbstractListHandlerArrayHandlerArrayListHandlerBaseResultSetHandlerBeanHandlerBeanListHandlerBeanMapHandlerColumnListHandlerKeyedHandlerMapHandlerMapListHandlerScalarHandler

QueryRuner 这个类有7个构造方法

Constructors
Constructor and Description
QueryRunner()

Constructor for QueryRunner.
QueryRunner(boolean pmdKnownBroken)

Constructor for QueryRunner that controls the use of ParameterMetaData.
QueryRunner(DataSource ds)

Constructor for QueryRunner that takes a DataSource to use.
QueryRunner(DataSource ds, boolean pmdKnownBroken)

Constructor for QueryRunner that takes a DataSource and controls the use of ParameterMetaData.
QueryRunner(DataSource ds, boolean pmdKnownBroken, StatementConfiguration stmtConfig)

Constructor for QueryRunner that takes a DataSource, a StatementConfiguration, and controls the use of ParameterMetaData.
QueryRunner(DataSource ds, StatementConfiguration stmtConfig)

Constructor for QueryRunner that takes a DataSource to use and a StatementConfiguration.
QueryRunner(StatementConfiguration stmtConfig)

Constructor for QueryRunner that takes a StatementConfiguration to configure statements when preparing them.

今天主要用到queryRunner(DataSource ds) 构造

方法

int[] batch(Connection conn, String sql, Object[][] params)

Execute a batch of SQL INSERT, UPDATE, or DELETE queries.
int[] batch(String sql, Object[][] params)

Execute a batch of SQL INSERT, UPDATE, or DELETE queries.
int execute(Connection conn, String sql, Object... params)

Execute an SQL statement, including a stored procedure call, which does not return any result sets.
<T> List<T> execute(Connection conn, String sql, ResultSetHandler<T> rsh,Object... params)

Execute an SQL statement, including a stored procedure call, which returns one or more result sets.
int execute(String sql, Object... params)

Execute an SQL statement, including a stored procedure call, which does not return any result sets.
<T> List<T> execute(String sql, ResultSetHandler<T> rsh, Object... params)

Execute an SQL statement, including a stored procedure call, which returns one or more result sets.
<T> T insert(Connection conn, String sql, ResultSetHandler<T> rsh)

Execute an SQL INSERT query without replacement parameters.
<T> T insert(Connection conn, String sql, ResultSetHandler<T> rsh,Object... params)

Execute an SQL INSERT query.
<T> T insert(String sql, ResultSetHandler<T> rsh)

Executes the given INSERT SQL without any replacement parameters.
<T> T insert(String sql, ResultSetHandler<T> rsh, Object... params)

Executes the given INSERT SQL statement.
<T> T insertBatch(Connection conn, String sql, ResultSetHandler<T> rsh, Object[][] params)

Executes the given batch of INSERT SQL statements.
<T> T insertBatch(String sql, ResultSetHandler<T> rsh, Object[][] params)

Executes the given batch of INSERT SQL statements.
<T> T query(Connection conn, String sql, Object[] params, ResultSetHandler<T> rsh)

<T> T query(Connection conn, String sql, Object param, ResultSetHandler<T> rsh)

<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh)

Execute an SQL SELECT query without any replacement parameters.
<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)

Execute an SQL SELECT query with replacement parameters.
<T> T query(String sql, Object[] params, ResultSetHandler<T> rsh)

<T> T query(String sql, Object param, ResultSetHandler<T> rsh)

<T> T query(String sql, ResultSetHandler<T> rsh)

Executes the given SELECT SQL without any replacement parameters.
<T> T query(String sql, ResultSetHandler<T> rsh, Object... params)

Executes the given SELECT SQL query and returns a result object.
int update(Connection conn, String sql)

Execute an SQL INSERT, UPDATE, or DELETE query without replacement parameters.
int update(Connection conn, String sql, Object... params)

Execute an SQL INSERT, UPDATE, or DELETE query.
int update(Connection conn, String sql, Object param)

Execute an SQL INSERT, UPDATE, or DELETE query with a single replacement parameter.
int update(String sql)

Executes the given INSERT, UPDATE, or DELETE SQL statement without any replacement parameters.
int update(String sql, Object... params)

Executes the given INSERT, UPDATE, or DELETE SQL statement.
int update(String sql, Object param)

Executes the given INSERT, UPDATE, or DELETE SQL statement with a single replacement parameter.

public Object query(String sql, ResultSetHandler rsh)

public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException 之间的区别就是它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource 方法中重新获得 Connection。

  • ResultSetHandler接口的实现类

  • ArrayHandler:把结果集中的第一行数据转成对象数组。
  • ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
  • BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
  • BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
  • ColumnListHandler:将结果集中某一列的数据存放到List中。
  • KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
  • MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
  • MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List

方法的使用

  使用前准备工具类  和配置文件

  src 下添加  db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/bookstore
username=root
password=root

 使用DBCP连接池

 DBCPUtils.java

package com.study.jdbc.Utils;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; public class DBCPUtils { private static DataSource dataSource;
static{ try {
//加载db.properties 配置文件
InputStream is=DBCPUtils.class.getClassLoader().getResourceAsStream("db.properties");
Properties props=new Properties();
props.load(is);
//创建数据源
dataSource=BasicDataSourceFactory.createDataSource(props);
} catch (Exception e) {
throw new RuntimeException(e);
} }
public static DataSource getDataSource(){
return dataSource;
}
public static Connection getConnection(){ try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}

操作:

package com.study.jdbc.test;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import javax.sql.DataSource; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.junit.Test; import com.study.jdbc.Utils.DBCPUtils; public class DBUtilsQueryRunnerDBCP { @Test
public void test1() throws SQLException{
DataSource dataSource=DBCPUtils.getDataSource();
QueryRunner qr=new QueryRunner(dataSource);
String sql="select * from user";
//ArrayHandler()把结果集第一行转化为对象数组
// qr.query() 执行查询sql语句
//qr.update() 执行更新sql语句
// qr.execute()执行sql语句
Object[] list=qr.query(sql, new ArrayHandler() );
for (Object i : list) {
System.out.print(i +" ");
}
} @Test
public void test2() throws SQLException{
DataSource dataSource=DBCPUtils.getDataSource();
QueryRunner qr=new QueryRunner(dataSource);
String sql="select * from user";
List<Object[]> rs=qr.query(sql, new ArrayListHandler());
for (Object i : rs) {
for (Object[] j : rs) {
for (Object object : j) {
System.out.print(object);
}
System.out.println();
}
}
} @Test
public void test3() throws SQLException{
DataSource dataSource=DBCPUtils.getDataSource();
QueryRunner qr=new QueryRunner(dataSource);
String sql="select * from user";
//MapListHandler把每条数据转化为Map对象
List<Map<String, Object>> map =qr.query(sql, new MapListHandler());
for (Map<String, Object> map2 : map) {
for (Entry<String, Object> en: map2.entrySet()) {
System.out.print(en.getKey()+" ="+en.getValue() +" ");
}
System.out.println();
}
}
public static void main(String[] args) throws SQLException {
DataSource dataSource=DBCPUtils.getDataSource();
QueryRunner qr=new QueryRunner(dataSource);
String sql="select * from user where userId=?";
Map<String, Object> map = qr.query(sql, new MapHandler() ,2);
for ( Entry<String, Object> i : map.entrySet()) {
System.out.print(i.getKey()+"="+i.getValue()+" ");
} }
}

BeanListHandler

@Test
public void test2() throws SQLException{
DataSource dataSource=DBCPUtils.getDataSource();
QueryRunner qr=new QueryRunner(dataSource);
String sql="select * from user";
List<User> rs=qr.query(sql, new BeanListHandler<>(User.class));
for (Object user : rs) {
System.out.println(user.toString());
}
}

DBUtils-对JDBC简单封装的开源工具类库的更多相关文章

  1. 利用jdbc简单封装一个小框架(类似DBUtils)

    利用jdbc写的一个类似DBUtils的框架 package com.jdbc.orm.dbutils; import java.io.IOException; import java.io.Inpu ...

  2. java的jdbc简单封装

    在学了jdbc一段时间后感觉自己写一个简单的封装来试试,于是參考的一些资料就写了一下不是多好,毕竟刚学也不太久 首先写配置文件:直接在src下建立一个db.properties文件然后写上内容 < ...

  3. DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)

    DBUtils:提高了程序的性能,编程更加简便 架包 mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar common ...

  4. Apache—dbutils开源JDBC工具类库简介

    Apache—dbutils开源JDBC工具类库简介 一.前言 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用 ...

  5. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. 开源工具DbUtils的使用(数据库的增删改查)

    开源工具DbUtils的使用(数据库的增删改查) 一.DbUtils简介: DBUtils是apache下的一个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果 ...

  7. Spring jdbc 对象Mapper的简单封装

    一般查询实体的时候,都需要这么使用/**      * 根据id查询      *       * @return      */     public Emp queryEmpById(Intege ...

  8. Guava 开源工具的简单介绍

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...

  9. JDBC【2】-- JDBC工作原理以及简单封装

    目录 1. 工作原理 1.1 加载驱动 1.1.1 类加载相关知识 1.1.2 为什么JDK 1.6之后不需要显示加载了? 1.2 驱动加载完成了,然后呢? 2. 简单封装 1. 工作原理 一般我们主 ...

随机推荐

  1. IIS 加载 JSON 错误 404 解决办法

    MIME设置:在IIS的站点属性的HTTP头设置里,选MIME 映射中点击”文件类型”-”新类型”,添加一个文件类型:关联扩展名:*.json内容类型(MIME):application/x-java ...

  2. Spring整合JMS(四)——事务管理

    原文链接:http://haohaoxuexi.iteye.com/blog/1983532 Spring提供了一个JmsTransactionManager用于对JMS ConnectionFact ...

  3. BZOJ 1485: [HNOI2009]有趣的数列 [Catalan数 质因子分解]

    1485: [HNOI2009]有趣的数列 Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所 ...

  4. Effective Java 第三版——32.合理地结合泛型和可变参数

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  5. OPP面向对象的介绍及使用

    概述 面向过程与面向对象面向过程:专注于如何去解决一个问题的过程,编程特点是用一个个函数去实现过程操作,没有类与对象的概念面向对象:专注于有哪一个对象实体去解决这个问题,编程特点是:出现了一个个的类, ...

  6. 怎样在VS2010-2017中使用LightningChart绘图控件?

    为了方便开发人员能更快速的使用开发工具,下面给大家提供LightningChart® Ultimate SDK v.8 使用手册: 1.   安装软件 -          运行 setup.exe ...

  7. 聊聊一直困扰前端程序员的浏览器兼容-【css】

    1.为什么会出现浏览器兼容问题? 由于各大主流浏览器由不同的厂家开发,所用的核心架构和代码也很难重和,这就为各种莫名其妙的Bug(代码错误)提供了温床.再加上各大厂商出于自身利益考虑而设置的种种技术壁 ...

  8. pandas读取各类sql数据源

    大数据分析中,我们经常需要使用pandas工具读取各类数据源并将结果保存到数据库中. 本文总结了一些读取和写入常用数据库数据的一些方法,包括mysql,oracle,impala等. 其中读取数据库数 ...

  9. 【南京邮电】maze 迷宫解法

    [南京邮电]maze 迷宫解法 题目来源:南京邮电大学网络攻防训练平台. 题目下载地址:https://pan.baidu.com/s/1i5gLzIt (密码rijss) 0x0 初步分析 题目中给 ...

  10. 02 Java类的加载机制

    1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构 ...