DBUtils-对JDBC简单封装的开源工具类库
DBUtils 是对JDBC简单封装的开源工具类
详细介绍地址: https://baike.baidu.com/item/Dbutils/10655914?fr=aladdin
在使用DBUtils工具类之前需要DBUtil jar包 登录官方网址 下载最新jar包和API 也可以直接点击 下载

解压下载的压缩包

主要用到 QueryRuner ResultSetHander 这些类
ResultSetHander 接口 有许多实现类
AbstractKeyedHandler, AbstractListHandler, ArrayHandler, ArrayListHandler, BaseResultSetHandler, BeanHandler, BeanListHandler, BeanMapHandler, ColumnListHandler, KeyedHandler, MapHandler, MapListHandler, ScalarHandler
QueryRuner 这个类有7个构造方法
| 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)
Deprecated.
|
<T> T |
query(Connection conn, String sql, Object param, ResultSetHandler<T> rsh)
Deprecated.
|
<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)
Deprecated.
|
<T> T |
query(String sql, Object param, ResultSetHandler<T> rsh)
Deprecated.
|
<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简单封装的开源工具类库的更多相关文章
- 利用jdbc简单封装一个小框架(类似DBUtils)
利用jdbc写的一个类似DBUtils的框架 package com.jdbc.orm.dbutils; import java.io.IOException; import java.io.Inpu ...
- java的jdbc简单封装
在学了jdbc一段时间后感觉自己写一个简单的封装来试试,于是參考的一些资料就写了一下不是多好,毕竟刚学也不太久 首先写配置文件:直接在src下建立一个db.properties文件然后写上内容 < ...
- DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)
DBUtils:提高了程序的性能,编程更加简便 架包 mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar common ...
- Apache—dbutils开源JDBC工具类库简介
Apache—dbutils开源JDBC工具类库简介 一.前言 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用 ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 开源工具DbUtils的使用(数据库的增删改查)
开源工具DbUtils的使用(数据库的增删改查) 一.DbUtils简介: DBUtils是apache下的一个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果 ...
- Spring jdbc 对象Mapper的简单封装
一般查询实体的时候,都需要这么使用/** * 根据id查询 * * @return */ public Emp queryEmpById(Intege ...
- Guava 开源工具的简单介绍
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...
- JDBC【2】-- JDBC工作原理以及简单封装
目录 1. 工作原理 1.1 加载驱动 1.1.1 类加载相关知识 1.1.2 为什么JDK 1.6之后不需要显示加载了? 1.2 驱动加载完成了,然后呢? 2. 简单封装 1. 工作原理 一般我们主 ...
随机推荐
- BZOJ 3265: 志愿者招募加强版 [单纯形法]
传送门 一个人多段区间,一样.... 不过国家队论文上说这道题好像不能保证整数解.... #include <iostream> #include <cstdio> #incl ...
- ctags的使用
1. 生成tags文件 为当前目录下的所有C程序文件生成对应的tags文件: $ ctags *.c 为同一个目录下的所有文件建立tags如下 $ ctags –R (较常用) 这个命令 ...
- for in 在数组和json中
数组中也有for--in,相较于对象中的用法是有区别的:数组中 var arr = ['曹操','曹植','曹丕'] for(i in arr){ console.log(i) //0 1 2 con ...
- 【模板小程序】求第n个质数
#include <iostream> #include <vector> using namespace std; int nth_prime(int n) { vector ...
- Maven项目中的配置文件找不到以及打包问题
我们在使用maven开发项目的时候,创建model的时候会自动创建一个resource目录:这个目录是用来放配置文件的,我们把配置文件放在这个目录中项目打包才会将配置文件打包进去. 有的时候我们会把配 ...
- u-boot核心初始化
异常向量表:异常:因为内部或者外部的一些事件,导致处理器停下正在处理的工作,转而去处理这些发生的事件.ARM Architecture Reference Manual p54页.7种异常的类型:Re ...
- PhpStorm的破解 汉化
以前一直习惯使用sublime,最近发现phpstorm比submit稍微更强大些,其很多插件都是直接可以使用,不需要另外去拓展了 其中的破解.汉化步骤就需要借助一些资源 (1)破解 安装完毕后,直接 ...
- Properties工具类
/** * 加载Properties文件 * @param path Properties文件路径 * @return */ private static Properties getClasspat ...
- WPF DataTriger 用法示例代码
用法1: <DataGridTemplateColumn Header="{lex:LocText ExamineRoom}"> <DataGridTemplat ...
- Maven中避开测试环节
两种方法 修改pom文件 添加<skipTests>true</skipTests>标签 <plugin> <groupId>org.apache.ma ...