02_c3p0之c3p0-config.xml配置案例,操作c3p0的jdbcUtil工具类的编写
c3p0也是一个开源jdbc连接池,我们熟悉的Hibernate和Spring框架使用的都是该数据源。
这里获得数据源使用的方法是:ComboPooledDataSource
它提供的构造方法有:
|
ComboPooledDataSource(boolean autoregister) |
|
ComboPooledDataSource(java.lang.String configName) |
通过第三个构造方法读取配置文件,它的配置文件是一个xml文件,也可以是一个properties文件。
在c3po中的ComboPooledDataSource类提供了如下方法:
setDriverClass:
设置驱动使用的是
setJdbcUrl:设置url
setInitialPoolSize(int initialPoolSize)
setPassword:设置密码
setUser:设置用户名
不适用配置文件的使用方法:
package cn.toto.utils;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public
class JdbcUtils {
private
static DataSource
ds;
static {
try {
//初始化c3p0连接池
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/day14");
cpds.setUser("root");
cpds.setPassword("123456");
cpds.setInitialPoolSize(5);
cpds.setMaxPoolSize(20);
ds =cpds;
} catch (PropertyVetoException e) {
throw
new ExceptionInInitializerError("属性不匹配的错误");
}
}
//获取与指定数据的连接
public
static DataSource getSource(){
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 {
Connection conn = JdbcUtils.getConnection();
System.out.println(conn);
//结果是:com.mchange.v2.c3p0.impl.NewProxyConnection@10bbf9e
}
}
通过配置文件的方式读取文件。
当通过设置配置文件xml时它可以自动查找,不用通过类加载的方式了。只要它的文件路径是在classloader(类路径也可以说是classes下面)的路径下面。(在官方文档中可以找到配置文件)
配置文件好后的文件是:
<?xml
version="1.0"encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property
name="automaticTestTable">con_test</property>
<property
</property>
<property
</property>
<property
</property>
<property
</property>
<property
</property>
<property
</property>
<property
</property>
<user-overrides
user="test-user">
<property
</property>
<property
</property>
<property
</property>
</user-overrides>
</default-config>
<named-config
name="toto">
<property
</property>
<property
</property>
<property
name="driverClass">com.mysql.jdbc.Driver</property>
<property
name="jdbcUrl">jdbc:mysql://localhost:3306/day14</property>
<property
name="user">root</property>
<property
</property>
</named-config>
</c3p0-config>
这时写好的JdbcUtils是:
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 com.mchange.v2.c3p0.ComboPooledDataSource;
public
class JdbcUtils {
private
static
DataSourceds;
static {
//ds = new ComboPooledDataSource();//默认的缺省的配置
ds =
new ComboPooledDataSource("toto");//配置文件中设置的内容不用写其他的是因为它可以自动查找classloader下的c3p0-config.xml文件(要注意的是文件的名称必须是c3p0-config.xml)如果文件的名称不是这个,将出现错误。
}
//获取与指定数据的连接
public
static
DataSourcegetSource(){
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;
}
}
}
02_c3p0之c3p0-config.xml配置案例,操作c3p0的jdbcUtil工具类的编写的更多相关文章
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
- Java操作属性文件之工具类
最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import ...
- 【原创】POI操作Excel导入导出工具类ExcelUtil
关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...
- xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil
若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...
- Java 操作Redis封装RedisTemplate工具类
package com.example.redisdistlock.util; import org.springframework.beans.factory.annotation.Autowire ...
- hibernate.cfg.xml配置(Oracle+c3p0)
说明:数据库:Oracle10g:连接池:c3p0 结构: 一.配置hibernate.cfg.xml <?xml version="1.0" encoding=" ...
- 07_数据库创建,添加c3p0操作所需的jar包,编写c3p0-config.xml文件,编写User.java,编写jdbcUtils.java实现操作数据库的模板工具类,UserDao编写,Dao
1 创建day14数据库,创建user.sql表: A 创建数据库 day14 B 创建数据表 users create table users ( id int primary keyaut ...
- Mybatis config.xml 配置
<!-- xml标准格式 --><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...
- cordova 启动界面config.xml配置
<preference name="SplashScreen" value="screen"/> <preference name=" ...
随机推荐
- [HNOI2008]玩具装箱TOY
题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...
- [hdu5608]function
题意:$\sum_{d|n}f(d)=n^{2}-3n+2$,求$\sum_{i=1}^{n}f(i)\mod 10^{9}+7$ , $n \leqslant 10^{9}$ $\left( T \ ...
- widows下的进程与服务
进程: 当程序卡死的时候,我们可以直接通过任务管理器来关闭进程. 服务: 在这个界面,我们可以选择启动或者关闭相关服务,还可以选择服务是否自动启动. 以关闭MySQL自启动服务为例:https://j ...
- Scrapy框架
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以 ...
- Cisco 的基本配置实例之六----常排错命令--关闭提示
TEST#terminal monitor # 排除网络故障以前,请打开这一命令以便实时的接收到交换机的提示信息. TEST# TEST#sh run #显示所有的配置清单,可将这些配置保存成文本作为 ...
- VMWare - Ubuntu 64 (16.04)之扩容介绍
背景 貌似是一个老生常谈的问题哈,由于自己之前也没有弄过,今天正好有时间稍微折腾了一下. 这里就选择最简单的方式来为大家呈现. VMWare 的设置 没有什么可以过多说的,完全是图形操作.这里直接上图 ...
- js 当前时间刷新
<p>每隔1秒钟,打印当前时间</p> <div id="time"></div> <script> function ...
- 关于Matchvs一些使用心得与建议
我的项目是类似<贪吃蛇>玩法的一款IO游戏,就是几个玩家在游戏界面中可以吃食物,也可以相互吃,吃了食物或对方都会变大这样子.我是在用cocos creator做完前端开发的部分后,开始接入 ...
- Missing URI template variable 'XXXX' for method parameter of type String
原因:就是spring的controller上的@RequestMapping的实参和方法里面的形参名字不一致 方法:改成一样就可. ps.还能用绑定的方法,不建议,因为太麻烦了 @RequestMa ...
- idea+jsp+jstl c标签页面异常
先在Schema and DTDs配置C.tld文件 最后提示是少包 网上很多方法都说少jstl.jar 折腾了很久 其实还少standard.jar 以前的解决方法(看下面) 把这两个包分别加到项目 ...