今天给大家介绍一种新的数据连接池实现方式——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> select(String sql, Object [] params){
List> list = new ArrayList>();
try{
connection = this.getConn();
preparedStatement = connection.prepareStatement(sql);
if(params != null){
for(int i =0; i
preparedStatement.setObject(i+1, params[i]);//逐一给问号赋值
}
}
resultSet = preparedStatement.executeQuery();
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnCount = rsmd.getColumnCount();
while(resultSet.next()){
Map map = new HashMap();
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文件中的代码:
mysqlsource
jdbc:mysql://localhost:3306/test
com.mysql.jdbc.Driver
60000
30
10
5
1
1
30s,10m,1d
ERROR
true
select CURRENT_DATE
web.xml文件中的代码:
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">
ServletConfigurator
org.logicalcobwebs.proxool.configuration.ServletConfigurator
xmlFile
WEB-INF/proxool.xml
1
index.jsp
index.jsp文件中的代码:
首页序号 | 班级名称 | 开班日期 | 结束日期 | 状态 | 操作 |
---|
String sql = "SELECT id, class_name, begin_date, end_date, state FROM class ";
DBLink db = new DBLink();
List> list = db.select(sql, null);
int index = 0;
for (Map 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 ? "未启用" : "启用");
%>
【 修改】【 查看】【 删除】}
%>
【0分下载示例】