今天给大家介绍一种新的数据连接池实现方式——proxool数据库连接池,这是一个健壮、易用的连接池。以下通过一个Demo说明一下怎样使用:

项目结构例如以下:

DBLink.java文件里的代码:

package com.ghj.util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class DBLink {private Connection connection;private PreparedStatement preparedStatement;private ResultSet resultSet;static{try {Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");    //载入驱动 }catch (ClassNotFoundException e) {System.out.println("载入驱动失败!");e.printStackTrace();}}private Connection getConn(){try {if(connection==null||connection.isClosed()){connection = DriverManager.getConnection("proxool.mysqlsource");  //获取连接 }} catch (SQLException e) {System.out.println("获取连接失败。");e.printStackTrace();}return connection;}public List<Map<String, Object>> select(String sql, Object [] params){List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();try{connection = this.getConn();preparedStatement = connection.prepareStatement(sql);if(params != null){for(int i =0; i<params.length; i++){preparedStatement.setObject(i+1, params[i]);//逐一给问号赋值}}resultSet = preparedStatement.executeQuery();ResultSetMetaData rsmd = resultSet.getMetaData();int columnCount = rsmd.getColumnCount();while(resultSet.next()){Map<String, Object> map = new HashMap<String, Object>();for(int i =1; i<=columnCount;i++){String columnName = rsmd.getColumnName(i);Object obj = null;if(rsmd.getColumnTypeName(i).equals("DATE")){obj = resultSet.getString(columnName);}else{obj = resultSet.getObject(columnName);}map.put(columnName, obj);}list.add(map);}}catch(SQLException e){e.printStackTrace();}finally{close();}return list;}private void close(){try {if(resultSet != null){resultSet.close();}} catch (SQLException e) {e.printStackTrace();}try {if(preparedStatement != null){preparedStatement.close();}} catch (SQLException e) {e.printStackTrace();}try {connection.close();} catch (SQLException e) {e.printStackTrace();}}
}

proxool.xml文件里的代码:

<?xml version="1.0" encoding="UTF-8"?>
<proxool-config><proxool><alias>mysqlsource</alias><driver-url>jdbc:mysql://localhost:3306/test</driver-url><driver-class>com.mysql.jdbc.Driver</driver-class><driver-properties><property name="user" value="root" /><property name="password" value="root" /></driver-properties><!-- 保留线程处于睡眠状态的最长时间 --><house-keeping-sleep-time>60000</house-keeping-sleep-time><maximum-connection-count>30</maximum-connection-count><minimum-connection-count>10</minimum-connection-count><!-- 连接池中可用的连接数量(空暇状态) --><prototype-count>5</prototype-count><maximum-new-connections>1</maximum-new-connections><simultaneous-build-throttle>1</simultaneous-build-throttle><!-- 连接池使用状态 --><statistics>30s,10m,1d</statistics><!-- 连接池日志类型 --><statistics-log-level>ERROR</statistics-log-level><!-- 假设为true,那么每一个被运行的SQL语句将会在运行期被log记录(DEBUG LEVEL) --><trace>true</trace><house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql></proxool>
</proxool-config>

web.xml文件里的代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><!-- 连接池 --><servlet><servlet-name>ServletConfigurator</servlet-name><servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class><init-param><param-name>xmlFile</param-name><param-value>WEB-INF/proxool.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

index.jsp文件里的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="com.ghj.util.DBLink,java.util.List,java.util.Map"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>首页</title></head><body><table width="100%" border="1px"><tr><th>序号   </th><th>班级名称</th><th>开班日期</th><th>结束日期</th><th>状态</th><th>操作</th></tr><%String sql = "SELECT id, class_name, begin_date, end_date, state FROM class ";DBLink db = new DBLink();List<Map<String, Object>> list = db.select(sql, null);int index = 0;for (Map<String, Object> map : list) {index = index + 1;int id = Integer.parseInt(map.get("id").toString());String className = map.get("class_name").toString();String beginDate = map.get("begin_date").toString();String endDate = map.get("end_date").toString();int state = Integer.parseInt(map.get("state").toString());String stateName = (state == 0 ? "未启用" : "启用");%><tr align="center"><td><%=index%></td><td><%=className%></td><td><%=beginDate%></td><td><%=endDate%></td><td><%=stateName%></td><td>【<a href="###" οnclick="">改动</a>】【<a href="###" οnclick="">查看</a>】【<a href="###" οnclick="">删除</a>】</td></tr><%}%></table></body>
</html>

0分下载演示样例

proxool数据库连接池用法相关推荐

  1. 【张小平工作日志】DBCP、c3p0、Druid、Proxool数据库连接池比较

    定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问 ...

  2. 数据库连接池用法之(common-dbcp)

    程序中如果想要用数据库连接池.可以用commons-dbcp-1.4.jar.该jar会配合commons-pool-1.6.jar来使用. 具体来说明如何使用dbcp数据库连接池. 1 创建一个数据 ...

  3. 数据库连接池种类、C3P0数据库连接池、德鲁伊数据库连接池

    数据库连接池种类 1.JDBC的数据库连接池使用javax.sql.DataSource来表示,DataSource只是一个接口,该接口通常由第三方提供实现 2.C3P0数据库连接池,速度相对较慢,稳 ...

  4. 传统方式连接数据库的弊端和数据库连接池原理

    本次博客带领大家学习传统方式连接数据库的弊端和数据库连接池原理. 传统获取Connection问题分析 传统的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要 ...

  5. jndi连接池链接mysql_使用容器提供的数据库连接池--JNDI用法

    现在,数据库的连接没有用到连接池几乎很少很少,每个项目组都可能有自己的数据库连接池组件,各容器提供商也提供了各自的数据库连接池,下面介绍一下tomcat和weblogic使用JNDI的数据库连接管理. ...

  6. proxool mysql 8小时_java数据库连接池proxool介绍及mysql8小时断开连接问题的说明

    Proxool是一种Java数据库连接池技术.是sourceforge下的一个开源项目,这个项目提供一个健壮.易用的连接池, 最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况. ...

  7. c#打开数据库连接池的工作机制_c#数据库连接池的用法

    我为什么喜欢用C#来做并发编程 题记:就语言和运行时层面,C#做并发编程一点都不弱,缺的是生态和社区. 硅谷才女朱赟(我的家门)昨天发了一篇文章<为什么用 Java -- 关于并发编程>, ...

  8. JSP proxool+mysql数据库连接池配置

    2019独角兽企业重金招聘Python工程师标准>>> 需要的jar包包括 proxool-0.9.1.jar proxool核心包 proxool-cglib-0.9.1.jar ...

  9. c#打开数据库连接池的工作机制_数据库连接池-tomcat-jdbc使用笔记

    现在 主流的数据库连接池有:Proxool.C3P0.DBCP.tomcat-jdbc.Druid.其中tomcat-jdbc是tomcat服务器比较可靠的 数据库连接池. Tomcat 在 7.0 ...

最新文章

  1. python 让异常名称显示出来
  2. maven项目添加jar包
  3. mpandroidchart y轴从0开始_从零开始学Pytorch(十七)之目标检测基础
  4. Mysql 无法插入中文,中文乱码解决
  5. 判定重大风险有哪几种_安全风险识别和评估的方法有哪些?
  6. 索尼PS5游戏主机炒到8000元以上:相比之下iPhone 12不值一提
  7. php矢量瓦片,矢量瓦片 - SegmentFault 思否
  8. hdu-2112 HDU Today(最短路)
  9. sublime中的emmet插件的使用技巧
  10. 八皇后--python代码
  11. Python 好友管理系统【简单易懂,代码可以直接运行】
  12. 微信公众号开发获取openid
  13. Java中的Stream流
  14. apache性能调优(转)
  15. Excel中CTRL+D的别样用法 隔行和隔列向下填充示例
  16. python求圆柱表面积_ZZULIOJ.1011: 圆柱体表面积 —— 1021:三个整数的最大值(C语言 Vs Python)...
  17. 手把手带你去搭建一套OpenStack云平台
  18. 太酷了!这款vue3.0+antdv管理系统,我粉了!
  19. 这才知道我的全部努力,不过完成了普通的生活。
  20. Excel制作表格的小技巧

热门文章

  1. UA MATH523A 实分析3 积分理论例题 讨论原函数的连续性
  2. 矩阵分析与多元统计11 Kronecker乘积
  3. javascript添加HTML事件处理程序的两种方式学习
  4. 图文解说OpenCV开发一 - 环境配置和入门程序详解
  5. python查找数组中出现次数最多的元素
  6. js两个数组对象通过相同元素匹配筛选
  7. springboot+jps+druid项目搭建
  8. 学容器必须懂 bridge 网络 - 每天5分钟玩转 Docker 容器技术(32)
  9. [cocos2d-x·总结]关于cocos2d-x几种画图方法的用法与思考
  10. python模拟鼠标点击和键盘输入的操作_Python模拟鼠标点击及键盘输入(PyUserInput)...