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. 工作原理 一般我们主 ...
随机推荐
- ABP官方文档翻译 6.3 本地化
本地化 介绍 应用程序语言 本地化源 XML文件 注册XML本地化源 JSON文件 注册JSON本地化源 资源文件 自定义源 当前语言是如何决定的 ASP.NET Core ASP.NET MVC 5 ...
- AndroidStudio3更改包名失败
使用Android Studio 3.0 Beta6更改包名refactor---rename一直提示:Refactoring cannot be performedFile xxx\build\xx ...
- CF341C. Iahub and Permutations [DP 排列]
http://codeforces.com/contest/341/problem/C 题意: 有一个长度为n的排列a,其中有一些位置被替换成了-1.你需要尝试恢复这个排列,将-1替换回数字.求有多少 ...
- BZOJ 1801: [Ahoi2009]chess 中国象棋 [DP 组合计数]
http://www.lydsy.com/JudgeOnline/problem.php?id=1801 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放 ...
- XGoServer 一个基础性、模块完整且安全可靠的服务端框架
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- 什么是 lnmp 实现原理。
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:debian.centos ...
- 单用户模式与救援模式:linux学习第三篇
单用户模式 1. 重新启动,在下列界面选项第一项按 e 按e后进入此grub界面(启动工具) 2. 找到linux16所在行,将'ro'(只读)修改为'rw'(读写),并加上 in ...
- shell编程值之正则表达式与字符截取(6)
正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp ...
- zabbix 3.4.1 解决中文乱码
docker zabbix中文乱码 基础镜像为:zabbix/zabbix-web-nginx-mysql 1.首先下载msyh.ttf 2.docker cp msyh.ttf 容器:/usr/sh ...
- Halcon一日一练:图像拼接技术
图像拼接技术就是针对同一场景的一系列图片,根据图片的特征,比如位置,重叠部分等,拼接成一张大幅的宽视角的图像. 图像拼接要求拼接后图像最大程度的与原图一致,失真尽可能的小,并且要尽量做到天衣无缝即没有 ...