JDBC连接池&DBUtils
JDBC连接池
DBCP:Apache推出的Database Connection Pool
使用步骤:
> 添加jar包 commons-dbcp-1.4.jar commons-pool-1.5.6.jar
l 创建DBCP连接池工具类
n 规范接口:javax.sql.DataSource接口
n 实现类:BasicDataSource, 重写接口中的方法getConnection()
使用读取配置文件的方式(加案例)
DBCP中有一个工厂类BasicDataSourceFactory
工厂类中有一个静态方法
static DataSource createDataSource(Properties prop)
此方法返回的就是DataSource接口的实现类对象BasicDataSource
创建Propertis集合+IO技术读取配置文件
把配置文件传入BasicDataSourceFactory静态方法createDataSource中
public class DBCPUtilsReadConfig {
private static DataSource dataSourse;
static{
try {
InputStream is = DBCPUtilsReadConfig.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
//创建Propertis集合
Properties pro=new Properties();
pro.load(is);
//把配置文件传入BasicDataSourceFactory静态方法createDataSource中
dataSourse = BasicDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
throw new RuntimeException("读取配置文件失败");
}
}
//创建获取数据库连接对象的方法
public static Connection getConnection(){
try {
return dataSourse.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e+"连接数据库失败");
}
}
public static void close(ResultSet rs,Statement stat,Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stat !=null){
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
C3P0连接池
C3P0开源免费的连接池!目前使用它的开源项目有:Spring、Hibernate等。使用第三方工具需要导入jar包,c3p0使用时还需要添加配置文件 c3p0-config.xml
创建C3P0连接池的工具类
连接的规范接口:javax.sql.DataSource接口
接口的实现类对象ComboPooledDataSource
成员位置创建ComboPooledDataSource对象
C3P0内部会自动扫描并解析xml文件,给ComboPooledDataSource设置数据量的4大连接信息
创建一个静态方法返回Connection对象
创建一个静态方法释放资源
publicclass C3P0UtilsReadXML {
privatestatic ComboPooledDataSource dataSource = new ComboPooledDataSource();
//使用静态代码块给ComboPooledDataSource设置4大数据量连接信息
/*static{
try {
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mybase4");
dataSource.setUser("root");
dataSource.setPassword("root");
} catch (Exception e) {
throw new RuntimeException("设置连接信息失败!");
}
}*/
// 创建一个返回ComboPooledDataSource的方法
publicstatic DataSource getDataSource(){
returndataSource;
}
// 创建一个静态方法返回Connection对象
publicstatic Connection getConnection() {
try {
returndataSource.getConnection();
} catch (SQLException e) {
thrownew RuntimeException(e + "获取数据库连接失败");
}
}
// 定义一个释放资源的方法
publicstaticvoid close(ResultSet rs, Statement stat, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
使用DBUtils工具类对数据库表进行增删改查
DBUtils工具类作用:简化JDBC的开发(6步)
DBUtils有3个核心类
1.QueryRunner:使用QueryRunner中的方法对数据库进行增删改查
2.DbUtils:提供了大量的释放资源的方法
3.ResultSetHandler接口:提供了处理查询结果集的方法
QueryRunner类
构造方法:
QueryRunner() 空参数构造方法
调用更新和查询方法的时候,需要传入Connection对象
QueryRunner(DataSource ds) 带DataSource数据库连接池的构造方法
调用更新和查询方法的时候QueryRunner会自动从DataSource实现类对象中获取数据库连接对象,使用完毕会自动归还
成员方法:
执行执行增删改的成员方法
int update(Connection conn, String sql, Object... params)用来执行增删改的SQL
int update(String sql, Object... params) 用来执行增删改的SQL
参数:
Connection conn:数据库连接对象
String sql:拼接的sql语句,可以使用?占位符
Object... params:?占位符的实际参数,可以使用Object[]
返回值:
int:执行的有效行数
执行执行查询的成员方法
<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
<T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
参数:
Connection conn:数据库连接对象
String sql:拼接的sql语句,可以使用?占位符
Object... params:?占位符的实际参数,可以使用Object[]
ResultSetHandler<T> rsh:用来存储查询之后的结果集,可以传入ResultSetHandler9种实现类对象
返回值:
<T> T:传入的ResultSetHandler实现类不同,返回的结果集也不同,使用泛型,传入什么结果集,就返回对应的类型
JDBC连接池&DBUtils的更多相关文章
- Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题
Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...
- 【JDBC&Dbutils】JDBC&JDBC连接池&DBUtils使用方法(重要)
-----------------------JDBC---------- 0. db.properties文件 driver=com.mysql.jdbc.Driver url=jdbc: ...
- JDBC连接池&DBUtils使用
使用连接池改造JDBC的工具类: 1.1.1 需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...
- JDBC连接池和DBUtils
本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...
- 【JAVAWEB学习笔记】10_JDBC连接池&DBUtils
使用连接池改造JDBC的工具类: 1.1.1 需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...
- jdbc连接池&改进dbUtil成C3P0Util
一.jdbc连接池 1.连接池的存在理由 前面介绍的dbUtils工具类虽然实现了一个对jdbc的简单封装.但它依旧采取从驱动管理获取连接 (DriverManager.getConnection ...
- 四大流行的jdbc连接池之C3P0篇
C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSourc ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介
日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...
- JDBC连接池-C池3P0连接
JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版 c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池 三种方 ...
随机推荐
- Apache 配置ArcGIS server/portal 反向代理
背景 处于安全,负载均衡,访问加速等原因会对服务器启用反向代理.arcgis for server的默认的访问地址为http://server:6080/arcgis.这个时候端口和实例名都暴露了.可 ...
- 网络编程 - 1.简单的套接字通信/2.加上通信循环/3.bug修复/4.加上链接循环/5.模拟ssh远程执行命令
1.简单的套接字通信 服务端 ''' 服务端 接电话 客户端 打电话 1.先启动服务端 2.服务端有两种套接字 1.phone 用来干接收链接的 2.conn 用来干收发消息的 ''' import ...
- 排序算法review<2>--Shell 排序
shell排序方法也是一种插入排序算法,于1959年由D.L.Shell提出,其基本方法是:首先将带排序文件分为d1(d1<n)组,将所有彼此之间间隔为d和d的倍数的记录放在一组中,然后在组内进 ...
- 【numpy】
ndarray在某个维度上堆叠,np.stack() np.hstack() np.vstack() https://blog.csdn.net/csdn15698845876/article/det ...
- Elasticsearch提示low disk watermark [85%] exceeded on [UTyrLH40Q9uIzHzX-yMFXg][Sonofelice][/Users/baidu/Documents/work/soft/data/nodes/0] free: 15.2gb[13.4%], replicas will not be assigned to this node
mac本地启动es之后发现运行一段时间一分钟就能打印好几条info日志: [--13T10::,][INFO ][o.e.c.r.a.DiskThresholdMonitor] [Sonofelice ...
- VirtualBox中安装Ubuntu12.04/Ubuntu14.04虚拟机(转)
add by zhj: 如果宿主机是win7,那VirtualBox建议安装4.3.12,再高的版本在Windows7上运行会报错,从4.3.14到5.0.xx版本,一直报错,搞了半天也解决不了.如果 ...
- Mysql索引长度和区分度
首先 索引长度和区分度是相互矛盾的, 索引长度太短,那么区分度就很低,吧索引长度加长,区分度就高,但是索引也是要占内存的,所以我们需要找到一个平衡点: 那么这个平衡点怎么来定? 比如用户表有个字段 ...
- spring中的缓存--Caching
1.spring从3.1开始支持缓存功能.spring 自带的缓存机制它只在方法上起作用,对于你使用其他持久化层的框架来讲,是没有影响的,相对来讲这种缓存方式还是不错的选择. 2.提供缓存的接口:or ...
- Jmeter添加变量的四种方法
一.在样本中添加同请求一起发送的参数.根据服务器设置的数据类型,来添加不同类型的参数 二.用户定义的变量 1.创建:添加->配置元件->用户定义的变量 2.作用:当前的线程组内所有Samp ...
- matplotlib绘制饼状图
源自http://blog.csdn.net/skyli114/article/details/77508430?ticket=ST-41707-PzNbUDGt6R5KYl3TkWDg-passpo ...