编写DBCP连接池
#配置数据库数据源
package com.itang.utils; 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.BasicDataSourceFactory; public class DBCPUtil { private static DataSource dataSource;
static{
try {
InputStream in = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
Properties props = new Properties();
props.load(in);
dataSource = BasicDataSourceFactory.createDataSource(props);
} catch (Exception e) {
e.printStackTrace();
throw new ExceptionInInitializerError(e);
}
} public static DataSource getDataSource(){
return dataSource;
}
public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
} /**
* 功能:关闭数据库连接资源
* @param rs
* ResultSet对象
* @param st
* Statement 对象
* @param conn
* Connection对象
*/
public static void closeSource(ResultSet rs, Statement st, Connection conn)
{
if(rs!=null)
{
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
closeSource(st,conn);
}
}
} public static void closeSource(Statement st, Connection conn) {
if(st!=null)
{
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
获取配置文件的属性值
public class GetDefaultValue {
private static String defaultimagepath;
private static String defaultimagename;
static {
ResourceBundle bundle=ResourceBundle.getBundle("defaultvalueconfig");
defaultimagepath = bundle.getString("defaultimagepath");
defaultimagename = bundle.getString("defaultimagename");
}
public static String getDefaultimagepath()
{
return defaultimagepath;
}
public static String getDefaultimagename()
{
return defaultimagename;
}
}
利用common-dbutils.jar和common-dbcp.jar工具来操作数据库:
注意查询的时候:
QueryRunner qr = new QueryRunner(dataSource);
qr.query(sql, new BeanHandler<User>(User.class));查询对象
qr.query(sql, new BeanListHandler<User>(User.class));查询对象列表
qr.query(sql, new ScalarHandler<>());返回单个值
具体可以参考下面代码:
package com.itwang.dao.impl; import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler; import com.itwang.dao.InterestNumberDao;
import com.itwang.domain.InterestCard;
import com.itwang.domain.InterestNumber;
import com.itwang.utils.DBCPUtil; public class InterestNumberDaoImpl implements InterestNumberDao {
private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
@Override
public void save(InterestNumber interestNumber) {
// TODO Auto-generated method stub
try {
qr.update("insert into interestnumber(id,name,follownumber,description,path,filename) values(?,?,?,?,?,?)",interestNumber.getId(),interestNumber.getName(),interestNumber.getFollownumber(),interestNumber.getDescription(),interestNumber.getPath(),interestNumber.getFilename());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public List<InterestNumber> findAllInterestNumber() {
// TODO Auto-generated method stub
List<InterestNumber> list=null;
try {
list=qr.query("select * from interestNumber",new BeanListHandler<InterestNumber>(InterestNumber.class));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
@Override
public void deleteInterestNumber(String id) {
// TODO Auto-generated method stub
try {
qr.update("delete from interestnumber where id=?", id);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public InterestNumber findInterestNumberById(String id) {
// TODO Auto-generated method stub
InterestNumber interestNumber= null;
try {
interestNumber=qr.query("select * from interestnumber where id=?", new BeanHandler<InterestNumber>(InterestNumber.class), id);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return interestNumber;
}
@Override
public void updateInterestNumber(InterestNumber interestNumber) {
// TODO Auto-generated method stub
try {
qr.update("update interestnumber set name=?,follownumber=?,description=?,path=?,filename=? where id=?",interestNumber.getName(),interestNumber.getFollownumber(),interestNumber.getDescription(),interestNumber.getPath(),interestNumber.getFilename(),interestNumber.getId());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public int checkStatusInterestNumber(String id, String interestnumberid) {
// TODO Auto-generated method stub
Long count=null;
try {
count=qr.query("select count(*) from interestrelative where uid=? and pid=?",new ScalarHandler<>(), id,interestnumberid);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(count.intValue()>0)
return 1;
else
return 0;
}
@Override
public void deleteRelative(String uid, String pid) {
// TODO Auto-generated method stub
try {
qr.update("delete from interestrelative where uid=? and pid=?", uid,pid);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void addRelative(String id,String uid, String pid) {
// TODO Auto-generated method stub
try {
qr.update("insert into interestrelative(id,uid,pid) values(?,?,?)",id, uid,pid);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public List<InterestNumber> findInterestNumberByKeywords(String searchKeywords) {
// TODO Auto-generated method stub
List<InterestNumber> list=null;
String sqlstring="select * from interestnumber where name like CONCAT('%', ?, '%')";
try {
list=qr.query(sqlstring,new BeanListHandler<InterestNumber>(InterestNumber.class),searchKeywords );
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
@Override
public void updateFollowNumber(int totalUser,String pid) {
// TODO Auto-generated method stub
try {
qr.update("update interestnumber set follownumber=? where id=?",totalUser,pid);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public int getTotalUserByPid(String pid) {
// TODO Auto-generated method stub
Long total=null;
try {
total=qr.query("select count(*) from interestrelative where pid=?", new ScalarHandler<>(), pid);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return total.intValue();
}
@Override
public void addInteretCard(InterestCard interestCard) {
// TODO Auto-generated method stub
try {
qr.update("insert into interestcard(id,datetime,title,content,uid,pid) values(?,?,?,?,?,?)",interestCard.getId(),interestCard.getDatetime(),interestCard.getTitle(),interestCard.getContent(),interestCard.getUser().getId(),interestCard.getInterestnumber().getId());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
编写DBCP连接池的更多相关文章
- DBCP连接池的使用
1.新建工程 2.导入commons-dbcp commons-logging commons-pool这三个包 3.创建dbcpconfig.properties的文件 实例如下 #连接设置 dri ...
- DBCP 连接池
DBCP数据源 DBCP 是 Apache 软件基金组织下的开源连接池实现 导入maven包: <!-- dbcp连接池 --> <dependency> <groupI ...
- DBUtils工具类和DBCP连接池
今日内容介绍 1.DBUtils2.处理结果集的八种方式3.连接池4.连接池的用法1 PrepareStatement接口预编译SQL语句 1.1 预处理对象 * 使用PreparedStatemen ...
- DBCP连接池简介
DBCP连接池简介 1.数据库连接基础 数据库连接池基础主要包括以下三个方面的内容:数据库连接池的基本概念.数据库连接池的工作原理.Java开源的连接池.下面将从这三个方面一一介绍: (1)数据库连接 ...
- 采用DBCP连接池技术管理连接
DBCP的使用步骤步骤一:导包,使用第三方的道具,必须导入相应的jar包. 一般需要导入两个jar包: -commons-dbcp-1.x.jar包 -commons-pool-1.x.x.jar包 ...
- DBCP连接池使用问题
问题现象: 启动应用,访问无压力,一切正常,一段时间过后,应用访问异常. 问题分析: 1.web容器线程爆满,拒绝服务.由于应用并发量大,线程响应时间长增加,线程池连接数逐步递增直到爆满,导致应用拒绝 ...
- DBCP连接池介绍
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
- DBCP连接池原理分析及配置用法
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
- JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作
1 JNDI和在tomcat中配置DBCP连接池 JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.namin ...
随机推荐
- 6.BOM
BOM的介绍 浏览器对象模型. 操作浏览器部分功能的API.比如让浏览器自动滚动. BOM的结构图 window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子 ...
- Linux centos 6.4安装
Linux系统安装: 开启虚拟机: 界面说明:Install or upgrade an existing system 安装或升级现有的系统install system with basic vid ...
- 洛谷P3588 [POI2015]PUS(线段树优化建图)
题面 传送门 题解 先考虑暴力怎么做,我们把所有\(r-l+1-k\)中的点向\(x\)连有向边,表示\(x\)必须比它们大,那么如果这张图有环显然就无解了,否则的话我们跑一个多源最短路,每个点的\( ...
- docker部署生产环境下的tomcat
1. dockerfile文件 FROM tomcat:7-jre8 WORKDIR /etc COPY ./Shanghai /etc/localtime WORKDIR /usr/share/zo ...
- Python自动发送HTML测试报告
在我们做自动化测试的时候,执行完所有的测试用例,我们是希望马上得到结果的,那么我们不可能一直盯着去看,这个时候就需要引入邮件功能 1.首先我们使用一个python的第三方发邮件的库 yagmail g ...
- js的常用方法和对象学习
js的常用方法和对象学习String对象:操作字符的. 使用:字符串.函数名. 大小写转换: toUpperCase() 转换大写 toLowerCase() 转换小写 function testSt ...
- (一)Win消息机制,SDK编程基础
一,基本概念 SDK:软件开发工具包(缩写:SDK.外语全称:Software Development Kit) API:应用程序接口 WINAPI:Windows平台下的系统调用,包含 window ...
- Mac退出vim
按下ESC后输入:才能进入命令模式! 进入之后输入: qw (保存退出) 然后按2次大写Z退出 q! (不保存退出) 输入后回车退出
- V1-bug Alpha阶段发布说明
V1-bug Alpha阶段发布说明 欢迎使用WEDO创意社区(部署IP为:60.205.230.0) WHAT'S WEDO 这是一个致力于创意发布.合作开发的网站. 模块 功能 注册 添加新账号 ...
- element ui 表格提交时获取所有选中的checkbox的数据
<el-table ref="multipleTable" :data="appList" @selection-change="changeF ...