03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池
DBCP数据源
使用DBCP数据源,需要导入两个jar包
Commons-dbcp.jar:连接池的实现
Common-pool.jar:连接池实现的依赖库。
导入mysql的jar包。
DBCP核心API
BasciDataSource
它可以通过实例化对象的方式获得一个对象。
它里面有如下方法:
setDriverClassName(String driverClassName)
设置驱动类的名称。
setInitialSize(int initialSize)
设置初始化时的链接数目。
setMaxActive(int maxIdle)
设置最大的并发访问数量。
setMaxIdle(int maxIdle):
设置最大的闲置数目。
setPassword:用于设置密码。
setUrl:设置url
setUsername:设置用户名。
数据源实现BasicDataSourceFactory
用于创建数据源的工厂类,
不设配置文件时使用BasicDataSource的程序的写法:
package cn.toto.utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
public
class JdbcUtils {
private JdbcUtils(){}
//定义BasicDataSource的父类接口的形式,获得ds的参数。
private
static DataSource
ds;
static {
//要想使用写好的数据源的功能,得先初始化一个dbcp连接池
BasicDataSource bds = new BasicDataSource();
//设置一系列参数
bds.setDriverClassName("com.mysql.jdbc.Driver");
bds.setUrl("jdbc:mysql://localhost:3306/day14");
bds.setUsername("root");
bds.setPassword("123456");
//设置初始化大小
bds.setInitialSize(5); //个连接数
bds.setMaxActive(20);//设置并发访问数目。
//bds.setMaxWait(0);//设置最大等待时间。不等待。
ds = bds;
//获得数据是通过父接口的DataSource接口。
}
//获得连接池
public
static DataSource getDataSource(){
return
ds;
}
//获得与指定数据库的连接
public
static Connection getConnection()
throws SQLException{
//从连接池返回一个连接
return
ds.getConnection();
}
public
static
void release(ResultSet rs,Statement stmt,Connection conn){
if(rs!=null)
{
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
rs = null;
}
if(stmt!=null){
try{
stmt.close();
}catch(SQLException e){
e.printStackTrace();
}
stmt = null;
}
if(conn!=
null) {
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
conn = null;
}
}
}
用于验证的主函数的写法:
package cn.toto.demo;
import java.sql.Connection;
import java.sql.SQLException;
import cn.toto.utils.JdbcUtils;
public
class Demo {
public
static
void main(String[] args)
throws SQLException {
for(int
i=0;i<30;i++){
Connection conn = JdbcUtils.getConnection();//如果只写这句,程序将一直等待执行。
System.out.println(conn);//条
conn.close();//条数据。
}
}
}
在文档中还有一个方法:
org.apache.commons.dbcp
Class BasicDataSourceFactory它里面有一个这样的方法:
createDataSource
(Properties properties)
Creates andconfigures a BasicDataSource
instance
based on the given properties.
它是根据Properties,根据properties中的信息获得信息。
配置dbcp的配置文件的方法是:找到文档中的Configuration,里面有多个属性。
在src下面编写一个一个配置文件config.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day14
username=root
password=123456
initialSize=5
maxiActive=20
通过配置文件的方式获得的数据源的源码是:
package cn.toto.utils;
import
java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import
org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public
class JdbcUtils {
private JdbcUtils() {
}
//
定义BasicDataSource的父类接口的形式,获得ds的参数。
private
static DataSource
ds;
static {
try {
InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream(
"config.properties");//通过类加载的方式获得获得配置文件的流
Properties prop = new Properties();
prop.load(in);//通过流将配置项加载进来。
//通过工厂类读取
ds = BasicDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
throw
new ExceptionInInitializerError();
}
}
//
获得连接池
public
static DataSource getDataSource() {
return
ds;
}
//
获得与指定数据库的连接
public
static Connection getConnection()
throws SQLException {
//
从连接池返回一个连接
return
ds.getConnection();
}
public
static
void release(ResultSet rs, Statement stmt, Connection
conn) {
if (rs !=
null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if (stmt !=
null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn !=
null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池的更多相关文章
- maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理
MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary ...
- maven依赖jar包更新,业务jar需同步更新(业务jar依赖API)
背景: 环境出现问题,定位为依赖jar缺失,修改工程pom文件补充依赖jar. 更新要点说明: 依赖jar,更新提交 业务jar,也需更新提交:maven构建会把依赖jar引用进去,更新环境如果单独更 ...
- maven下载依赖jar包失败处理方法--下载jar包到本地并安装到maven仓库中
所有maven依赖jar包地址:https://repo1.maven.org/maven2/org/apache/ 1. 安装jar包失败报错: The following artifacts co ...
- 解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题
最近一个项目中,使用号称下一代构建工具的Gradle构建项目. 使用中发现一个问题,Gradle从中央库下载的jar文件在系统的其它目录,使用gradle eclipse添加Eclipse支持时,ja ...
- Eclipse下新建Maven项目、自动打依赖jar包
当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个本地仓库,但可以配置访 ...
- [Maven]Maven构建可执行的jar包(包含依赖jar包)
----------------------------------------------------------------- 原创博文,如需转载请注明出处! 博主:疲惫的豆豆 链接:http:/ ...
- Maven的assembly插件实现自定义打包部署(包含依赖jar包)
微服务必备 优点: 1.可以直接导入依赖jar包 2.可以添加插件启动 .sh 文件 3.插件的配置以及微服务的统一打包方式 1.首先我们需要在pom.xml中配置maven的assembly插件 & ...
- Maven下载项目依赖jar包和使用方法
一.Maven3.5.0安装与配置+Eclipse应用 参考:Maven3.5.0安装与配置+Eclipse应用 二.http://mvnrepository.com/ 此处以http://mvnre ...
- Eclipse下Maven新建项目、自动打依赖jar包(包含普通项目和Web项目)
不多说,直接上干货! 当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个 ...
随机推荐
- [SCOI2005]骑士精神
题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,*表示空位.两组数据之间没有空行. 输出格式 ...
- bzoj 3451 Normal
Description 某天WJMZBMR学习了一个神奇的算法:树的点分治! 这个算法的核心是这样的: 消耗时间=0 Solve(树 a) 消耗时间 += a 的 大小 如果 a 中 只有 1 个点 ...
- 【hihoCoder 1419】重复旋律4
Description 小 Hi 平时的一大兴趣爱好就是演奏钢琴. 我们知道一个音乐旋律被表示为长度为 N的数构成的数列. 小 Hi 在练习过很多曲子以后发现很多作品中的旋律有重复的部分. 我们把一段 ...
- [BZOJ]1017 魔兽地图DotR(JSOI2008)
BZOJ第一页做着做着就能碰到毒题,做到BZOJ1082小C就忍了,没想到下一题就是这种东西.这种题目不拖出来枭首示众怎么对得起小C流逝的青春啊. Description DotR (Defense ...
- [APIO/ctsc2007]
A.风铃 给一棵二叉树,叶子结点是玩具,为使你的弟弟满意,你需要选一个满足下面两个条件的风铃: (1) 所有的玩具都在同一层(也就是说,每个玩具到天花板之间的杆的个数是一样的)或至多相差一层.(2) ...
- RabbitMQ-Spring AMQP
上篇文章RabbitMQ基础入门学习了rabbitMQ一些基础的api,当然spring也在原生代码的基础上做了更多的封装,这篇文章就基于spring-rabbit,学习一下spring的实现. p. ...
- VS2017+xamain开发安卓(Addroid)应用
Visual Studio 2017下载地址: https://www.visualstudio.com/zh-hans/ 安卓模拟器官网下载: https://www.visualstudio.c ...
- sqlserver 取日期年份月份
select convert(varchar(10),datepart(YYYY,a.fssj)) as years,--得到年份convert(varchar(10),datepart(mm,a.f ...
- expect IDENTIFIER, actual IDENTIFIER 处理
涉及到注入数据库的报错,这是很常见的了. 但是期望IDENTIFIER,实际IDENTIFIER 的报错,你们知道是什么意思吗? 我已开始看到的时候,是mybatis报错发神经了,报错了报错.再跑一次 ...
- 优化Webpack打包速度
1. Webpack 可以配置 externals 来将依赖的库指向全局变量,从而不再打包这个库,比如对于这样一个文件: import React from 'react'; console.lo ...