#配置数据库数据源
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连接池的更多相关文章

  1. DBCP连接池的使用

    1.新建工程 2.导入commons-dbcp commons-logging commons-pool这三个包 3.创建dbcpconfig.properties的文件 实例如下 #连接设置 dri ...

  2. DBCP 连接池

    DBCP数据源 DBCP 是 Apache 软件基金组织下的开源连接池实现 导入maven包: <!-- dbcp连接池 --> <dependency> <groupI ...

  3. DBUtils工具类和DBCP连接池

    今日内容介绍 1.DBUtils2.处理结果集的八种方式3.连接池4.连接池的用法1 PrepareStatement接口预编译SQL语句 1.1 预处理对象 * 使用PreparedStatemen ...

  4. DBCP连接池简介

    DBCP连接池简介 1.数据库连接基础 数据库连接池基础主要包括以下三个方面的内容:数据库连接池的基本概念.数据库连接池的工作原理.Java开源的连接池.下面将从这三个方面一一介绍: (1)数据库连接 ...

  5. 采用DBCP连接池技术管理连接

    DBCP的使用步骤步骤一:导包,使用第三方的道具,必须导入相应的jar包. 一般需要导入两个jar包: -commons-dbcp-1.x.jar包 -commons-pool-1.x.x.jar包 ...

  6. DBCP连接池使用问题

    问题现象: 启动应用,访问无压力,一切正常,一段时间过后,应用访问异常. 问题分析: 1.web容器线程爆满,拒绝服务.由于应用并发量大,线程响应时间长增加,线程池连接数逐步递增直到爆满,导致应用拒绝 ...

  7. DBCP连接池介绍

    DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...

  8. DBCP连接池原理分析及配置用法

    DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...

  9. JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作

    1 JNDI和在tomcat中配置DBCP连接池 JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.namin ...

随机推荐

  1. 并发编程---线程 ;python中各种锁

    一,概念 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 --车间负责把资源整合到 ...

  2. Linux 下 Wordpress "Not Found" 解决

    无题.仅仅记录解决过程: 原因是WEB目录下的.htaccess文件需要开启伪静态才能将文件重定向到其他地方.

  3. 网络CCNA基础了解

    关于网络 CCNA.CCNP.CCIE 中的 CCNA 一.逻辑与.或.非 AND --> "与"计算 1 AND 1 = 1(取严) 1 AND 0 = 0 0 AND 1 ...

  4. Postman使用手册1——导入导出和发送请求查看响应

    导读: 现在的web和移动开发,常常会调用服务器提供restful接口进行数据请求,为了调试,一般会先用工具进行测试,通过测试后才开始在开发中使用.这里介绍一下如何在chrome浏览器利用postma ...

  5. css样式之标签的查找

    css的组成部分:选择器和声明 css的注释: /*这是注释*/ <!DOCTYPE html> <html lang="zh-CN"> <head& ...

  6. [CQOI2015]标识设计

    Luogu3170 128MB过不去 LOJ2099 256MB能卡过 BZOJ3934 512MB怎么都过的去 求在\(30*30\)的方格上放\(3\)个\(L\)的方案 , 有障碍 拓展这条路的 ...

  7. springcloud(二)-最简单的实战

    技术储备 Spring cloud并不是面向零基础开发人员,它有一定的学习曲线. 语言基础:spring cloud是一个基于Java语言的工具套件,所以学习它需要一定的Java基础.当然,sprin ...

  8. 我理解的Future模式

    学而时习之,不亦说乎!                              --<论语> 什么是Future? 考虑一个场景,为了完成某个业务,我需要同时查询三张表的三条独立数据.但 ...

  9. grunt 实例构建(四)

    相关插件的引用: grunt-usemin  对页面的操作 grunt-contrib-cssmin  压缩css load-grunt-tasks 瘦身gruntfile grunt-rev给md5 ...

  10. opencv-python 读入带有中文的图片路径

    windows 下读入带有中文的图片路径使用cv2.imread() 不能读入.使用如下代码可以. def cv_imread(filePath): cv_img = cv2.imdecode(np. ...